***快排sort与qsort的使用

sort是用来排序值,用>号。

而qsort是通过指针的对比。

代码:

#include 

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> a[i];
	sort(a,a+n,complare);         //sort(开头,结尾)complare为选填 
	//qsort(a,n,sizeof(int),cmp1);    //
	for(j=0;j
排序的二重判定
#include 

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;
}


你可能感兴趣的:(算法,骚技巧,好东西)