数据结构与算法(python实现快排)

python实现快速排序:
在这里插入图片描述

def quick_sort(L, start, end):
	if start < end:
		x = L[end] # 记录第一个坑的值,在最后做填充
		i = start # 初始位置和末尾会发上改变,所以需要先做好记录
		j = end
		m = end  # 初始从最后面开始挖坑,所以先记录
		while (start < end):
			while (start < end) and (L[start] <= x):  # 找出比假定的中位数x大的数,放到左边  
				start += 1
			if start < end:
				L[m] = L[start]  # 填坑 
				m = start  # 记录坑的位置
				end -= 1  # 将坑填后下次应该忽略填过坑的这个位置
 
			while (start < end) and (L[end] > x):
				end -= 1
			if start < end:
				L[m] = L[end]
				m = end
				start += 1
 
			
		L[start] = x 
		quick_sort(L,i,end-1)  # 分治(前半部分)
		quick_sort(L,start+1,j) # 分治(后半部分)
 
L = [1,0,4,2,7,5,9,3]
quick_sort(L, 0, len(L)-1)
print(L)

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/108587899
今日推荐