白猪掌柜的
#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;}如果填的话就是从大到小排序:1234567891011121314151617181920212223242526#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;12345/*cmp只是函数名称,是可以随便定义的。a和b的类型也不一定是int,可以是float、double、甚至你自己写的结构体。但注意你比较的元素不再是a > b*/int cmp(int a, int b){ return a > b;//从大到小}如有一个结构体数组:1234struct node{ int x, y, v;}a[100];那么cmp函数应该这么写:1234int cmp(struct node a, struct node b){ return a.v > b.v;}按照v的大小来从大到小排序只需要:sort(a, a + 100, cmp);