数据结构与算法C++之快速排序

本文详细介绍了快速排序算法的原理,通过选取参照元素,利用分治思想进行递归排序,对比归并排序,展示快速排序在处理大量数据时的高效性。并提供了C++的实现代码,以及10万个元素排序的性能测试结果。
摘要由CSDN通过智能技术生成

快速排序是一种比归并排序还要快的排序算法,具体原理如下图所示
在这里插入图片描述
对上图所示的数组,首先随机选取一个参照元素,一般选取最左边的元素4为参照元素,然后将数组排序成以4为分界点,左边都是小于4的元素,右边都是大于4的元素,按照这种方式进行不断递归,就可实现整个数组的排序。
在这里插入图片描述
上图显示的是程序的实现过程,首先指定最左边的元素 v v v 为参照元素,索引为 l l l,小于元素 v v v的 最后一个元素的索引为 j j j,正在处理的元素在大于元素 v v v 的元素的后面,索引为 i i i,如果 a r r [ i ] &gt; v arr[i] &gt; v arr[i]>v ,此时就将元素 i i i 合并到左边的元素中, i + + i++ i++,如果此时 a r r [ i ] &lt; v arr[i] &lt; v arr[i]<v ,那么就将 i i i 位置的元素与 j + 1 j+1 j+1 位置的元素交换,交换后 j + + j++ j++,此时 j j j 位置的元素就是小于 v v v 的,原来 j j j 位置的大于 v v v 元素交换到 i i i 位置了, i + + i++ i++,以此类推,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值