算法导论上的快速排序采用分治算法,步骤如下:
第一步,先去任意选取一个数字作为基准,可以去选取末位数字
接下来,从数列的第一位开始,依次和选出来的这个数字比较;如果小于这个数,就将小的数交换到左边;最后达到小于基准数的都在左边,大于基准数的都在右边,分为两个数组
然后分别对两个数组,重复上述第二个步骤
def quickSort(num,left,right):
if left >= right: # 如果只有一个数字时,结束递归
return
flag=left
for i in range(left+1,right+1): #默认以第一个数字作为基准数,从第二个数开始比较,生成索引时要注意右部的值
if num[flag]>num[i]:
tmp=num[i]
del num[i]
num.insert(flag,tmp)
flag+=1
quickSort(num,left,flag-1) #将基准数前后部分分别递归排序
quickSort(num,flag+1,right)
num=[1,-2,4,7,6,3,2,3]
quickSort(num,0,7)
print(num)
运行结果是:[ -2 , 1 , 2 , 3 ,3 , 4 , 6 , 7 ]