快速排序的Python实现

1、双指针法

def quick_sort(arr, start, end):
    # 递归结束条件
    if start >= end:
        return

    pivot = arr[start]
    left = start
    right = end

    while left != right:
        while right > left and arr[right] > pivot:
            right -= 1

        while left < right and arr[left] <= pivot:
            left += 1

        if left < right:
            arr[right], arr[left] = arr[left], arr[right]

    arr[start] = arr[left]
    arr[left] = pivot

    quick_sort(arr, start, left-1)
    quick_sort(arr, left+1, end)

2、单指针法

def quick_sort2(arr, start, end):
    # 递归结束条件
    if start >= end:
        return

    pivot = arr[start]
    mark = start
    cur = start

    while cur <= end:
        if arr[cur] < pivot:
            mark += 1
            arr[mark], arr[cur] = arr[cur], arr[mark]

        cur += 1

    arr[start] = arr[mark]
    arr[mark] = pivot

    quick_sort2(arr, start, mark-1)
    quick_sort2(arr, mark+1, end)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 每一次写快排都会出现很多问题,我也是很郁闷······总结一下,顺便看一下这次会不会顺利一些😜 遇见的错误 def...
    clshinem阅读 559评论 0 1
  • 快速排序是由C.R.A.Hoare(东尼·霍尔)所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlo...
    远行_2a22阅读 277评论 0 0
  • 目录 快速排序的介绍 快速排序的Python实现 快速排序的介绍 快速排序(quick sort)的采用了分治的策...
    一根薯条阅读 48,005评论 14 57
  • 难点分析: 快排的难点在于partition循环将终止的时候对于l和r位置的判断,对于基准点pivot的选择这里直...
    lixiaoxin阅读 285评论 0 1
  • 本文用 python 实现快速排序。 思路 - 假如有一个序列 [4, 6, 1, 14, 8],首先要把第一个数...
    谦面客阅读 885评论 0 2