ACM算法笔记(二)【史上最全】快速排序(STL库函数)

本文介绍了C++中快速排序算法的优势及其时间复杂度,并展示了如何使用STL库的sort函数进行排序。通过代码示例,解释了sort函数的基本用法,包括默认排序和自定义排序顺序。此外,还讲解了如何对结构体数组进行排序,以结构体的某一成员为排序依据。
摘要由CSDN通过智能技术生成

快速排序对于c++党来说是极大的福利,因为是C++(c with stl)懂得都懂【滑稽】

快速排序的时间复杂度O(nlogn),在排序算法中还算是比较快的一种。对于一些题目中,需要用到排序的,基本上直接STL大法就OK咯~

先上一段代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=1e+3;
bool cmp(int c,int b)
{
    return c<b;//从小到大排序
}
int main()
{
    int a[MAXN];
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    //sort(a,a+n);
    sort(a,a+n,cmp);
    //sort(a+1,a+n+1,cmp);
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
    return 0;
}//----->stl库sort函数

头文件
调用格式
sort(a,a+n);—>从a[0]到a[n-1],按照从小到大顺序
sort(a,a+n,cmp);—>从a[0]到a[n-1],按照自定义顺序
sort(a+1,a+1+n);—>从a[1]到a[n],按照从小到大顺序
sort(a+1,a+1+n,cmp);—>从a[1]到a[n],按照自定义顺序
说明:
数组a[],索引从0开始,所以如果是sort(a,a+n),那么是将数组a中0~n-1的数据从小到大排序。要是不小心把数组赋值从1-n,那么就应该是sort(a+1,a+n+1);
还有要说明的是,一般不外附比较函数,那么默认从小到大排序。
bool cmp(int a,int b)
{return a<b;}
--------------------------从小到大排序
bool cmp(int a,int b)
{return a>b;}
--------------------------从大到小排序
#下面再补充一下结构体排序~~

#include<iostream>
#include<algorithm>
using namespace std;
struct NODE
{
    int a;
    int b;
    int c;
}node[10001];
bool cmp(NODE x,NODE y)//注意参数类型是结构体类型
{
    return x.a<y.a;
    //return x.b<y.b;
    //return x.c<y.c;
    //根据结构体类型的某一元素进行排序原则
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>node[i].a>>node[i].b>>node[i].c;
    }
    sort(node+1,node+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        cout<<node[i].a<<" "<<node[i].b<<" "<<node[i].c<<endl;
    }
    return 0;
}

———————————————————————————————
文章原创,有问题请及时联系我。写作不易,留个赞呗嘿嘿``

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值