用Python写了一个快速排序。简单练习一下Python的基本语法。
快速排序采用分治法,基本思想是选取数组中一个数为基准数,一次排序过程中,将比基准数小的都放在它左边,比基准数大的不动。然后经过一次排序,左边部分都比基准数小,右边都比基准数大,然后对左右两边分别进行同样的排序(递归)。最后只直到剩下一个数字。
快速排序的思想还是比较简单的,也有多种实现思路。下列代码用的是简单的递归实现。
def quickSort(num, l, r):
if l >= r: #如果只有一个数字时,结束递归
return
flag = l
for i in range(l+1, r+1): #默认以第一个数字作为基准数,从第二个数开始比较,生成索引时要注意右部的值
if num[flag] > num[i]:
tmp = num[i]
del num[i]
num.insert(flag, tmp)
flag += 1
quickSort(num, l, flag-1) #将基准数前后部分分别递归排序
quickSort(num, flag+1, r)
num = [54, 26, 93, 17, 77, 31, 44, 55, 20]
quickSort(num, 0, 9)
print(num)