快速排序&sort()用法

快速排序实现原理:

#include 
#include 
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<" ";
    }
    cout<return 0;
}
void quick_sort(int arry[],int maxlen,int op,int ed)//第二个参数其实没毛用T_T
{
    int i,j;
    if(op1;
        j=ed;
        while(iif(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 
#include 
using namespace std;
struct people
{
    int num;
    string name;
};
bool compare1(people a,people b)//自定义排序规则
{
    return a.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<return 0;
}

你可能感兴趣的:(C/C++,快速排序,sort函数)