排序之快速排序

Posted 碎屑笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序之快速排序相关的知识,希望对你有一定的参考价值。

        

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,本过程利用递归已达到整个数据变成有序列表

from typing import Listimport random
def quick_sort(a: List[int]): _quick_sort_between(a, 0, len(a) - 1)
def _quick_sort_between(a: List[int], low: int, high: int): if low < high: # get a random position as the pivot k = random.randint(low, high) a[low], a[k] = a[k], a[low]
m = _partition(a, low, high) # a[m] is in final position _quick_sort_between(a, low, m - 1) _quick_sort_between(a, m + 1, high)
def _partition(a: List[int], low: int, high: int): pivot, j = a[low], low for i in range(low + 1, high + 1): if a[i] <= pivot: j += 1 a[j], a[i] = a[i], a[j] # swap a[low], a[j] = a[j], a[low] return j
if __name__ == "__main__": a4 = [5, -1, 9, 2, -3, 7] quick_sort(a4) print(a4)

(此代码来源网络)以上代码的实现过程中空间复杂度为O(1)

以上是关于排序之快速排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构-排序之快速排序(使用Java代码实现)

数据结构-排序之快速排序(使用Java代码实现)

重学数据结构和算法之归并排序快速排序

常用算法的简洁代码实现之快速排序归并排序

排序算法之快速排序

快速排序-递归实现