python 诠释 快速排序
?
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。
步骤为:
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
(以上摘自 wiki)
python 实现为:
?
def partition(list,low,high) : key = list[low] while low < high : while low < high and list[high] >= key : high -= 1 list[low] = list[high] while low < high and list[low] <= key : low += 1 list[high] = list[low] list[low] = key return lowdef quick_sort(list,low,high) : if low < high : key_index = partition(list,low,high) quick_sort(list,low,key_index) quick_sort(list,key_index+1,high)if __name__ == '__main__' : list = [49,38,65,97,76,13,27,49] quick_sort(list,0,len(list)-1) print list