sort是用来排序值,用>号。
而qsort是通过指针的对比。
代码:
#include <bits/stdc++.h>
using namespace std;
int cmp1(const void *a,const void *b){
return *(int*)a-*(int*)b; //qsort的使用,a-b为从小到大排序;
}
bool complare(int a,int b){ //sort的使用,从大到小排序,默认时是从小到大;
return a>b;
}
int main(){
int n,i,j;
cin >> n;
int a[n+1];
for(i=0;i<n;i++)
cin >> a[i];
sort(a,a+n,complare); //sort(开头,结尾)complare为选填
//qsort(a,n,sizeof(int),cmp1); //
for(j=0;j<n;j++)
cout << a[j];
return 0;
}
排序的二重判定
#include <bits/stdc++.h>
using namespace std;
struct ttt{
int r,c;
};
int cmp1(const void *a,const void *b){
if((*(ttt*)a).c==(*(ttt*)b).c)
return (*(ttt*)b).r-(*(ttt*)a).r; //b-a为从大到小
else
return (*(ttt*)b).c-(*(ttt*)a).c;
}
int main(){
ttt qq[4];
qq[0].c=10;qq[0].r=5;
qq[1].c=10;qq[1].r=2;
qq[2].c=10;qq[2].r=4;
qq[3].c=12;qq[3].r=2;
qsort(qq,4,sizeof(ttt),cmp1);
//cout << qq[3].c << "\t" << qq[3].r << endl;
for(int i=0;i<4;i++)
cout << qq[i].c <<"\t" << qq[i].r << endl;
}