快速排序

CRA研究的快速排序目前是效率最高的排序,这种排序看着感觉效率不高,但是在实测中展现出比其他的排序算法效率高出很多
算法采用一个对比的标识称为枢轴,算法的实现如下:
首先除传入序列外,这个算法还需要传入两个静态参数,一个是排序序列的最左边下标,另一个是最右边下标:这里分别设为left和right,本实现是以左边元素为枢轴,在实际中可以选择左中右都可以,然后从第二个数和倒数第一个数与枢轴进行比较,前面小于枢轴的数和后面大于枢轴的数进行交换,这样排序完成,将第j个数和最左边的枢轴进行交换,然后对第j+1个元素的左右两边进行同样处理,采用递归,这样代码就很简洁了。
template
void Qsort(T *a, const int left, const int right)
{
if(left < right){
int i = left;
int j = right +1;
T p = a[left];
do
do i++; while(a[i]>p);
do j–; while(a[j] <p);
if(i <j)
std::swap(a[i],a[j]);
while(i <j);
std::swap(a[left],a[j]);
Qsort(a,left, j-1);
Qsort(a,j+1, right);
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值