快速排序&sort()用法

本文介绍了快速排序的实现原理及代码示例,并演示了如何使用C++自定义sort()函数的比较规则来对结构体数组进行排序。

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

快速排序实现原理:

#include <iostream>
#include <algorithm>
using namespace std;
void quick_sort(int arry[],int maxlen,int op,int ed);
int main()
{
    int a[10]={2,1,7,4,6,8,2,3,1,0};
    //sort(a,a+10);
    quick_sort(a,10,0,10-1);

    for(int i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;
    return 0;
}
void quick_sort(int arry[],int maxlen,int op,int ed)//第二个参数其实没毛用T_T
{
    int i,j;
    if(op<ed)
    {
        i=op+1;
        j=ed;
        while(i<j)
        {
            if(arry[i]>arry[op])//如果比较的数组元素大于基准数,则交换位置。
            {
                int temp;
                arry[j]^=arry[i];
                arry[i]^=arry[j];
                arry[j]^=arry[i];
                j--;
            }else
            {
                i++;
            }
        }
        //跳出循环后i=j  处理op和i位置的数
        if(arry[i]>=arry[op])// 这里必须要取等“>=”,否则数组元素由相同的值时,会出现错误!
        {
            i--;
        }
        if(i!=op)//当两个元素地址相等时,异或交换会出错,变成0
        {//交换
        arry[i]^=arry[op];
        arry[op]^=arry[i];
        arry[i]^=arry[op];
        }
        quick_sort(arry,maxlen,op,i);//递归
        quick_sort(arry,maxlen,j,ed);
    }
}

自定义sort()比较规则:

#include <iostream>
#include <algorithm>
using namespace std;
struct people
{
    int num;
    string name;
};
bool compare1(people a,people b)//自定义排序规则
{
    return a.num<b.num; //升序排列,>号为降序排列
}
int main()
{
    people a[3]={{2,"two"},{3,"three"},{1,"one"}};
    sort(a,a+3,compare1);//sort第三个参数传比较函数的地址
    for(int i=0;i<3;i++)
    {
        cout<<a[i].name<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值