快速排序的思想:
1.选取一个数字作为基准,可选取末位数字
2.从列表第一位开始,依次与此数字比较,如果小于此数,将小数交换到左边,最后达到小于基准数的在左边,大于基准数的在右边,分为两个列表
3.分别对两个列表重复上述步骤
代码实现:
def quick_sort(list, start, end):
# 判断low是否小于high,如果为false,直接返回
if start < end:
i,j = start,end
#设置基准数
base = list[i]
while i < j:
#如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
while (i < j) and (list[j] >= base):
j = j - 1
# 如找到,则把第j个元素赋值给第i个元素,此时表中i,j个元素相等
list[i] = list[j]
# 同样的方式比较前半区
while (i < j) and (list[i] <= base):
i = i + 1
list[j] = list[i]
# 做完第一轮比较之后,列表被分成了两个半区,并且i=j,需要将这个数设置回base
list[i] = base
# 递归前后半区
quick_sort(list, start, i - 1)
quick_sort(list, j + 1, end)
return list
list1 = [47, 35, 65, 87, 72, 15, 2, 50]
print("快速排序: ")
quick_sort(list1, 0, len(list1) - 1)
print(list1)复制代码