?基本思想
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)
输出结果
?
|