快速排序
1 def quick_sort(lis, l, r): 2 if l < r: 3 mid = partition(lis, l, r) 4 quick_sort(lis, l, mid-1) 5 quick_sort(lis, mid+1, r) 6 7 8 def partition(lis, l, r): 9 mid = l 10 mid_value = lis[l] 11 while l < r: 12 # 第一次迭代也可能出现从左往右的超额迭代问题,故而加上l13 # 不加等号效率非常低,就在于那个lis[mid] 14 while l < r and mid_value <= lis[r]: 15 r -= 1 16 # 第二次迭代可能出现从左往右的超额迭代问题,故而加上l 17 while l < r and mid_value >= lis[l]: 18 l += 1 19 lis[l], lis[r] = lis[r], lis[l] 20 lis[l], lis[mid] = lis[mid], lis[l] 21 mid = l 22 return mid