快速排序(Quick Sort):
快速排序是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
示例:
一趟排序的过程:
排序的全过程:
代码实现:
#时间复杂度 O(nlogn)
def quick_sort(lists,left,right):
if left > right:
return lists
low = left
high = right
key = lists[left]
while left < right:
while left < right and lists[right] >= key:
right = right-1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left = left+1
lists[right] = lists[left]
lists[right] = key
quick_sort(lists,low,right-1)
quick_sort(lists,right+1,high)
return lists