12 快速排序_重要

12 快速排序

# encoding: utf=8

def quick_sort(a, start, end):
	# 快速排序: 将第一个值作为中间值, 将比它小的数都放在左边, 比它大的数都放在右边

	# 递归退出条件
	if start >= end:
		return

	# 基准元素
	mid_value = a[start]

	# 游标 low high
	low = start
	high = end


	while low < high:

		# 如果low < high, 且high指向元素大于等于基准元素, 则high往左移
		while low < high and a[high] >= mid_value:
			high -= 1

		# a[high] < mid_value 或 low == high
		a[low] = a[high]

		# 如果low < high, 且low指向元素小于基准元素, 则low往右移
		while low < high and a[low] < mid_value:
			low += 1

		# a[low] >= mid_value 或 low == high
		a[high] = a[low]


	# 退出循环 low == high
	a[low] = mid_value

	# 对左边子序列进行快速排序
	quick_sort(a, start, low - 1)

	# 对右边子序列进行快速排序
	quick_sort(a, low + 1, end)

猜你喜欢

转载自blog.csdn.net/qq_41089707/article/details/89301651
12