cheng029 发表于 2017-4-28 11:24:23

python 诠释 快速排序

快速排序使用分治法 (Divide and conquer)策略来把一个串行 (list)分为两个子串行(sub-lists)。
步骤为:


[*]从数列中挑出一个元素,称为 "基准"(pivot),
[*]重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition) 操作。
[*]
递归 地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

(以上摘自 wiki)
python 实现为:
 

def sub_sort(array,low,high) :
3   key = array
4   while low < high :
5         while low < high and key <= array :
6            high -= 1
7         while low < high and key > array :
8            array = array
9            low += 1
10            array = array
11   array = key
12   return low
13
14
15
16 def quick_sort(array,low,high) :
17   if low < high :
18         key_index = sub_sort(array,low,high)
19         quick_sort(array,low,key_index)
20         quick_sort(array,key_index+1,high)
21
22
23 if __name__ == '__main__':
24   array =
25   print array
26   quick_sort(array,0,len(array)-1)
27   print array
页: [1]
查看完整版本: python 诠释 快速排序