题目
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int N;
int Num[50001];
cin>>N;
for(int i=0;i<N;i++)
{
cin>>Num[i];
}
sort(Num,Num+N); //排序函数,必须包含algorithm头文件
for(int i=0;i<N;i++)
{
cout<<Num[i]<<endl;
}
return 0;
}
总结
一开始解这道题的时候自己写了一个快排,结果发现不能全部AC,后面发现是时间复杂度太高了,超出了时间限制,转而学习如何使用sort排序函数解这道题,因为自己的快排写不好真的没sort快
如果sort要使用第三个参数cmp,cmp为排序方法,最常用的方法是自己定义个比较函数实现升序降序
//数组排列的情况
bool cmp_up(int a,int b)//升序排序
{
return a<b;
}
bool cmp_down(int a,int b)//降序排序
{
return a>b;
}
sort(a,a+20,cmp_up);//升序排序
sort(a,a+20,cmp_down);//降序排序
知识点
#include< algorithm > | algorithm意为"算法",是C++的标准模版库(STL)中最重要的头文件之一 |
sort(buf,buf+n,cmp) | 排序函数,必须包含algorithm,第一个参数buf为第一个元素的地址,第二个参数为第一个元素的地址+长度(就是结束地址,也是最后一个元素的后地址,即左闭右开),第三个函数为排序方法(可以不写,默认为从小到大排序),时间复杂度为n*log2(n) |