C 语言函数库快速排序函数接口用起来特别的方便,以下是它的几个应用场景,希望和大家共享。
一维数组的排序
#include <stdio.h>
#include <stdlib.h>
int cmp(const void*, const void*);
int main()
{
int i = 0;
int num[15] = {0,};
printf("\n原始数据:\n");
for (i = 0; i < 15; i++)
{
num[i] = rand()%100+1;
printf("%d ",num[i]);
}
printf("\n排序后数据:\n");
qsort(num,15,sizeof(num[0]),cmp);
for (i = 0; i < 15; i++)
printf("%d ",num[i]);
printf("\n");
return 0;
}
int cmp(const void* a, const void* b)
{
return *((int *)a)-*((int *)b);
}
对于二维数组应该怎么样做呢? 请参考以下程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int f[11][3];
int cmp(const void * a, const void * b);
int main()
{
int j = 0;
memset(f,0,sizeof(f));
for (j = 0; j < 10; j++)
{
scanf("%d %d %d",&f[j][0],&f[j][1],&f[j][2]);
}
/ 按照f[][2] 排序
qsort(f,10,sizeof(f[0]),cmp);
for (j = 0; j < 10; j++)
{
printf("%d %d %d\n",f[j][0],f[j][1],f[j][2]);
}
return 0;
}
int cmp(const void * a, const void * b)
{
return (*((int *) a + 2) - *((int *) b + 2));
}