常用排序算法_05_快速排序

目录

1、基本思想

2、算法分析

3、代码实现

(1)python实现


1、基本思想

快速排序(Quicksort),又称划分交换排序(partition-exchangesort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以此达到整个数据变成有序序列。

2、算法分析

第一步:在数组中选一个基准元素(通常为数组第一个)。

第二步:将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

第三步:对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。

3、代码实现

(1)python实现

python 复制代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-


def quick_sort(data: list[int], first: int, last:int) -> None:
    if first >= last:
        return
    low = first
    high = last
    mid = data[low]
    while low < high:
        # 右指针移动
        while low < high and data[high] >= mid:
            high -= 1
        data[low] = data[high]
        # low += 1

        # 左指针右移
        while low < high and data[low] < mid:
            low += 1
        data[high] = data[low]
        # high -= 1

    data[low] = mid
    print(data)
    # 递归快速排序
    quick_sort(data, first, low-1)
    quick_sort(data, low+1, last)


def main():
    data = [54, 26, 93, 17, 77, 31, 45, 55, 20]
    # data = [3,1,5,2,1,0]
    # data = [7, 31, 23, 13, 35, 3]
    print(f"排序前:{data}")
    quick_sort(data, 0, len(data)-1)
    print(f"排序后:{data}")


if __name__ == '__main__':
    main()
相关推荐
BaoshengTT3 分钟前
2026年双流区汽车贴膜种类及挑选要点保圣威固7V不凡门店
python
会编程的土豆21 分钟前
LeetCode 热题 HOT100(一):哈希表与双指针入门(Go 实现)
算法·leetcode·职场和发展
zhiSiBuYu051722 分钟前
Flask 请求与响应新手实战指南
后端·python·flask
学习中.........25 分钟前
并行 BPE 训练 与 手写 `Tokenizer`
人工智能·算法·机器学习·语言模型
宸津-代码粉碎机28 分钟前
告别手动Jar部署!生产级无损热部署方案,彻底解决OOM与更新失效问题
java·大数据·开发语言·人工智能·python
米码收割机29 分钟前
【移动】线上购物移动端网站(源码+文档)【独一无二】
java·开发语言·前端·python·django
未知违规用户34 分钟前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi
想会飞的蒲公英37 分钟前
PyTorch reshape、view、transpose、广播到底怎么选?
人工智能·pytorch·python
科学实验家38 分钟前
动态规划2
算法·动态规划
卷无止境38 分钟前
Python装饰器:一层糖衣包裹的函数魔法
后端·python