基本思想
1选定Pivot中心轴
2将大于Pivot的数字放在Pivot的右边
3将大于Pivot的数字放在Pivot的左边
4分别对左右子序列重复前三步 *** 作
#定义函数 def quicksort(arry: list, l: int,r: int) : if l < r: i = l j = r # 取第一个值为中心轴 pivot = arry[l] while i != j: # 从右往左找到第一个比中心轴小的元素,交换位置 while j > i and arry[j] > pivot: j -= 1 if j > i: # 如果找到了,进行元素交换 arry[i] =arry[j] i += 1 # 从左往右找到第一个比中心轴大的元素,交换位置 while i < j and arry[i] < pivot: i += 1 if i < j: arry[j] = arry[i] j -= 1 arry[i] = pivot # 以i为中心轴轴进行子序列元素交换 quicksort(arry, l, i-1) quicksort(arry, i+1, r) #测试 import random #生成数组 data = [random.randint(-100, 100) for _ in range(10)] #data =list(input("请输入数字:")) quicksort(data, 0, len(data) - 1) print(data)
输出结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)