算法基础之快速排序

本文介绍了快速排序这一高效的排序算法,其工作原理类似二分法查找。通过选取基数,利用两个指针左右移动来实现排序,最终达到基数左侧元素小于基数,右侧元素大于基数的效果。文章还提供了一个简单的Python代码示例来帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没办法,快排永远滴神

什么是快速排序

快速排序是优化过的冒泡排序,是处理大量数据排序的最优解。如果你体会过二分法查找妙处,相信你一定能很快上手快速排序,因为快速排序与二分法查找有着异曲同工之妙。

原理

在这里插入图片描述
选择一个基数,一般选择数组头,然后新建两个指针,left,right。
在这里插入图片描述
right指针下的是2比left指针下的5小,那么两个交换位置,接着left指针向右移动
在这里插入图片描述
由于1、3都比5小,直接忽略
在这里插入图片描述
此时left指针下的8比right指针下的5大,交换位置
在这里插入图片描述
接着right指针向左移动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:指向基数的指针是不移动的
最后基数额左边全是小于基数的,基数的右边全是大于基数的。

接着递归
在这里插入图片描述
是不是很简单呢?

附上python的代码

代码

numbers=[4,5,1,21,66,6,7,9,15,44,60,16,3,77,51,13,99,52]

left=0
right=len(numbers)-1
def con(left,right):
    global numbers
    t = 1
    a=left
    b=right
    while left<right:
        if numbers[left]<numbers[right]:
            if t==1:
                right-=1
            else:
                left+=1
        elif numbers[left]>=numbers[right]:
            numbers[left],numbers[right]=numbers[right],numbers[left]
            t=1-t
            left+=1-t
    if left-a>=2:
        con(a,left-1)
    if b-right>=2:
        con(right+1,b)
con(left,right)

制图不易,点个赞支持一下吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值