快速排序的简单实现

本文详细介绍了一种高效的排序算法——快速排序。快速排序通过选取一个基准数并以此为依据将数列分为左右两部分,左边的数都小于基准数,右边的数都大于基准数,之后递归地对左右两部分进行同样的操作,直至整个数列有序。

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

       排序是日常开发中一种常见的操作,也就是对一个数列按照某种规则进行排列,下面介绍一种速度快,效率高的排序算法——快速排序
       快排的实现方式是在数列中选一个作为基准数,一般是第一个或者最后一个,然后将数列中的数一一与基数作比较分成两部分,左边比基数小,右边比基数大(这是升序,降序的话左边大,右边小),最后对左右两边分别重复上面步骤,直到两边的数列都只有一个元素或没有元素,排序结束。
       举个具体例子来看一下,有一个数组{4,3,6,5,7,2,1,8}

       第一步:选一个数为基准数(base),这里选第一个,a[0] = 4,再定义两个指针,一个在最左边(蓝色箭头),一个在最右边(橙色箭头),向中间扫描。如图


       第二步:右边指针向左扫描与基数比较,当扫描到的元素比基数小时(比基数大的不动),将右指针所对应的元素赋值给左指针对应的元素(8不动,1赋值给左指针),这时右指针移动到1的位置,停止扫描(比基数小的放做左边).


       第三步:左指针向右扫描,当扫描到的元素比基数大时(比基数小的不动),将左指针对应的元素赋值给右指针对应的元素(3不动,6赋值给右指针),这时左指针移动到6的位置,停止扫描(比基数大的放右边).


       第四步:重复二、三步骤,直到两个指针相碰,过程图如下





        到这一步可以看到左右指针相碰,然后将基数值4赋值给相碰的位置,这时候一趟排序完毕,可以看到左边都是比基数4小的数,右边都是比基数大的数,下图是经过一趟排序完毕后的数列,再对左右两边数列分别重复一二三四步骤,直到两边的数列都只有一个元素或没有元素,排序结束。


  最后附上具体代码和注释(注释写的比较详细)



代码运行效果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值