qsort(s,n,sizeof(s[0]),cmp);
数组
/*
#include <cstdio>
#include <cstring>
#include <cstdlib>
int s[10000],n,i;
int cmp(const void *a, const void *b)
{
return (*(int *)a-*(int *)b);/// 正的就是从小到大排 负的就是从大到小排
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&s[i]);
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%d ",s[i]);
return(0);
}
*/
/*
结构体数组
#include <cstdio>
#include <cstdlib>
struct node
{
double date1;
int no;
} s[100];
int i,n;
int cmp(const void *a,const void *b)
{
///struct node *aa=(node *)a;
///struct node *bb=(node *)b;
///return(((aa->date1)>(bb->date1))?1:-1);
return ((node*)a)->date1 - ((node*)b)->date1;
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
s[i].no=i+1;
scanf("%lf",&s[i].date1);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%d %lf\n",s[i].no,s[i].date1);
return(0);
}
*/
///No.6.对结构体排序.加入no来使其稳定(即data值相等的情况下按原来的顺序排)
/*
#include <stdio.h>
#include <stdlib.h>
struct node
{
double date1;
int no;
} s[100];
int i,n;
int cmp(const void *a,const void *b)
{
///struct node *aa=(node *)a;
///struct node *bb=(node *)b;
///if(aa->date1!=bb->date1)
///return(((aa->date1)>(bb->date1))?1:-1);
if(((node*)a)->date1!=((node*)b)->date1)
return(((((node*)a)->date1)>(((node*)b)->date1))?1:-1);
else
return((((node*)a)->no)-(((node*)b)->no));
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
s[i].no=i+1;
scanf("%lf",&s[i].date1);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%d %lf\n",s[i].no,s[i].date1);
return(0);
}
*/
/*
5
1.1 2.2 1.1 3.3 0.0
5 0.000000
1 1.100000
3 1.100000
2 2.200000
4 3.300000
Process returned 0 (0x0) execution time : 19.668 s
Press any key to continue.
*/
字符串数组
///对字符串数组的排序(char s[][]型)
/*
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[100][100];
int i,n;
int cmp(const void *a,const void *b)
{
return(strcmp((char*)a,(char*)b));
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%s",s[i]);
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%s\n",s[i]);
return(0);
}
///对字符串数组排序(char *s[]型)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *s[100];
int i,n;
int cmp(const void *a,const void *b)
{
return(strcmp(*(char**)a,*(char**)b));
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
s[i]=(char*)malloc(sizeof(char*));
scanf("%s",s[i]);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n;i++) printf("%s\n",s[i]);
return(0);
}
*/