算法4(NB三人组之快速排序)
快速排序
快排思路
取一个元素p(第一个元素),使元素p归位;
列表被p分成两部分,左边都比p小,右边都比p大;
递归完成排序。

代码示例
def quick_sort(data, left, right): """ 快速排序 :param data: 无序列表 :param left: 下标最小值 :param right: 下标最大值 :return: """ if left < right: mid = partition(data, left, right) quick_sort(data, left, mid - 1) quick_sort(data, mid + 1, right) def partition(data, left, right): """ partition核心函数 :param data: 无序列表 :param left: 下标最小值 :param right: 下标最大值 :return: 有序原列表 """ tmp = data[left] while left < right: # 从右边找比tmp小的数 while left < right and data[right] >= tmp: right -= 1 data[left] = data[right] # 从左边找比tmp大的数 while left < right and data[left] <= tmp: left += 1 data[right] = data[left] data[left] = tmp return left li = [1, 3, 2, 4, 5, 7, 6, 8, 9, 0] quick_sort(li, 0, len(li) - 1) print(li)

浙公网安备 33010602011771号