算法

https://blog.csdn.net/zz709196484/article/details/78747290

python 快速排序

 1 def QuickSort(myList,start,end):
 2     #判断 开始的下标是否 < 结束的下标,如果为false,直接返回
 3     if start < end:
 4         i,j = start,end
 5         #设置基准数,这时已经腾出了一个坑位i
 6         base = myList[i]
 7 
 8         while i < j:
 9             #如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现
10             while (i < j) and (myList[j] >= base):
11                 j = j - 1
12 
13             #如找到,则把第j个元素赋值给第i个元素,
14             if i < j: # 刚好找到了比基准数小的
15                 myList[i] = myList[j] 
16                 i = i + 1 # myList[i] 已经比基准数了,所以前区不需要比较第i个数了,所以i向后移一位
17 
18             #同样的方式比较前区
19             while (i < j) and (myList[i] <= base):
20                 i = i + 1
21             if i < j: # 刚好找到了比基准数大的数
22                 myList[j] = myList[i]
23                 j = j - 1 # myList[j] 已经比基准数了,所以后区不需要比较第j个数了,所以j往前移一位
24 
25         #做完第一轮比较之后,列表被分成了前后两个区,并且i=j,需要将这个数设置回base
26         myList[i] = base
27 
28         #递归前后区
29         QuickSort(myList, start, i - 1)
30         QuickSort(myList, i + 1, end)
31     return myList
32 
33 
34 myList = [49,38,65,97,76,13,27,49]
35 print("Quick Sort: ")
36 QuickSort(myList,0,len(myList)-1)
37 print(myList)
原文地址:https://www.cnblogs.com/linkenpark/p/5539967.html