一、对int类型数组排序
C++代码
- int num[100];
Sample:
- int cmp ( const void *a , const void *b )
- {
- return *(int *)a – *(int *)b;
- }
- qsort(num,100,sizeof(num[0]),cmp);
二、对char类型数组排序(同int类型)
C++代码
- char word[100];
Sample:
- int cmp( const void *a , const void *b )
- {
- return *(char *)a – *(char*)b;
- }
- qsort(word,100,sizeof(word[0]),cmp)
三、对double类型数组排序(特别要注意)
C++代码
- double in[100];
- int cmp( const void *a , const void *b )
- {
- return *(double *)a > *(double *)b ? 1 : -1;
- } qsort(in,100,sizeof(in[0]),cmp);
四、对结构体一级排序
C++代码
- struct In {
- double data;
- int other;
- }s[100]
- //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写
- int cmp( const void *a ,const void *b)
- {
- return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
- }
- qsort(s,100,sizeof(s[0]),cmp);
代码示例
#include<stdio.h>
#include<stdlib.h>
int comp(const void *a,const void *b){
return *(double *)a>*(double *)b?1:-1;
//int型数组返回类型为
//return *(int *)a-*(int *)b;
}
int main()
{
int n,i;
double a[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%lf",&a[i]);
qsort(a,n,sizeof(double),comp);
for(i=0;i<n;i++)
printf("%.2f ",a[i]);
system("pause");
return 0;
}