sort排序是系统自带的函数,可直接使用,它是快速排序 它的时间复杂度是O(nlogn),它很快 它可以对普通数组进行排序,对动态数组排序,对结构体进行排序 形式有两种:sort(begin,end), sort(begin,end,cmp),其中begin为起始地址,end为终止地址,构成一个左闭右开的区间,cmp为比较规则函数。 实例:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[1010]={2, 4, 3, 1};
int n = 4;
sort(a, a + n);//对a[0],a[1],a[2],a[3]不会对a[4]进行排序
//原因是区间左闭右开
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int> v;
v.push_back(3);
v.push_back(4);
v.push_back(2);
v.push_back(5);
sort(v.begin(), v.end());//左开右闭
for(int i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct Point
{
int x, y;
}p[4]={{1, 2},{1, 0},{2, 1}, {0, 1}};
int cmp(Point a, Point b)//单关键字排序
{
return a.x < b.x;//按x值从小到大排序
}
int cmp2(Point a, Point b)//多关键字排序
{
if(a.x==b.x)//当x值相等时按y的值从小到大排序
{
return a.y<b.y;
}
return a.x < b.x;//按x值从小到大排序
}
int main()
{
sort(p, p + 4, cmp);
for(int i=0;i<4;i++)
{
cout<<p[i].x<<" "<<p[i].y<<endl;
}
cout<<endl;
sort(p, p + 4, cmp2);//多关键字排序
for(int i=0;i<4;i++)
{
cout<<p[i].x<<" "<<p[i].y<<endl;
}
return 0;
}