快速排序对于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;
}
———————————————————————————————
文章原创,有问题请及时联系我。写作不易,留个赞呗嘿嘿``