2015-12-11
展开全部
可以不填,如果不填就是从小到大排序。
#include<iostream>
using namespace std;
#include<algorithm>
#include<cstdlib>
int main(void)
{
int n;
cin >> n;
int * m = (int *)malloc(sizeof(int) * n);
//等价于int m[n];但是当n太大时程序可能会崩溃
if(!m)//申请失败时
{
perror("malloc");//报错
exit(-1);//结束程序
}
for(int i = 0; i < n; i++)
cin >> m[i];
sort(m, m + n);
for(int i = 0; i < n; i++)
cout << m[i] << ends;//ends是空格
return 0;
}
如果填的话就是
从大到小排序:
#include<iostream>
using namespace std;
#include<algorithm>
#include<cstdlib>
bool cmp(int a,int b)
{
return a > b;
}
int main(void)
{
int n;
cin >> n;
int * m = (int *)malloc(sizeof(int) * n);
//等价于int m[n];但是当n太大时程序可能会崩溃
if(!m)//申请失败时
{
perror("malloc");//报错
exit(-1);//结束程序
}
for(int i = 0; i < n; i++)
cin >> m[i];
sort(m, m + n, cmp);
for(int i = 0; i < n; i++)
cout << m[i] << ends;//ends是空格
return 0;
}
说白了,第三个参数就是我们自己写的一个函数,这个函数只要返回只为int类型就可以了并且有两个参数就可以了,但是若真的想要做到排序,只要让(从小到大)这个函数里写return a<b;就可以了如果是从大到小就return a>b;
/*cmp只是函数名称,是可以随便定义的。a和b的类型也不一定是int,可以是float、double、甚至你自己写的结构体。但注意你比较的元素不再是a > b*/
int cmp(int a, int b)
{
return a > b;//从大到小
}
如有一个结构体数组:
struct node
{
int x, y, v;
}a[100];
那么cmp函数应该这么写:
int cmp(struct node a, struct node b)
{
return a.v > b.v;
}
按照v的大小来从大到小排序只需要:
sort(a, a + 100, cmp);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询