算法导论上的快速排序采用分治算法,步骤如下:
第一步,先去任意选取一个数字作为基准,可以去选取末位数字
接下来,从数列的第一位开始,依次和选出来的这个数字比较;如果小于这个数,就将小的数交换到左边;最后达到小于基准数的都在左边,大于基准数的都在右边,分为两个数组
然后分别对两个数组,重复上述第二个步骤
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 ]
本文详细介绍了快速排序算法的实现过程及具体步骤。通过选取一个基准数并进行比较,将待排序的数组分成两部分,每部分再递归地进行快速排序,最终实现整个数组的排序。
856

被折叠的 条评论
为什么被折叠?



