qsort() 的头文件是:
#include < stdlib.h >
函数原型:
void __cdecl qsort (void * base, size_t num ,size_t width, int ( __cdecl * comp)(const void * , const void * ) )
函数说明:
__cdecl :调用约定。
base:传入数组。
num:比较元素个数。
width:元素大小(一次读取字节个数)。
comp:大小比较函数(由自己写,传参时传入)
先使用一下qsort:
int cmp_int(const void *fp, const void *sp)
{
return *((int *)fp) - *((int *)sp);
}
int cmp_double(const void *fp, const void *sp)
{
return *((double *)fp) > *((double *)sp) ? 1 : -1;
}
int cmp_char(const void *fp, const void *sp)
{
return *((char *)fp) - *((char *)sp);
}
int cmp_string(const void *fp, const void *sp)
{
return strcmp((char *)fp,(char *)sp);
}
/
int main()
{
/*****int*****/
int arr1[5] = { 7, 1, 9, 3, 2, };
qsort(arr1, 5, sizeof(arr1[0]), cmp_int);
printf("int ---> ");
for (int i = 0; i < 5; i++)
{
printf("%d ",arr1[i]);
}
printf("\n\n");
/*****double*****/
double arr2[5] = { 2.5, 4.7, 2.51, 1.7, 1.70, };
qsort(arr2, 5, sizeof(arr2[0]), cmp_double);
printf("double---> ");
for (int i = 0; i < 5; i++)
{
printf("%f ", arr2[i]);
}
printf("\n\n");
/*****char*****/
char arr3[6] = { "becda" };
qsort(arr3, 5, sizeof(arr3[0]), cmp_string);
printf("char ---> ");
for (int i = 0; i < 5; i++)
{
printf("%c ", arr3[i]);
}
printf("\n\n");
/*****string*****/
char arr4[5][10] = { "break", "hello", "kill", "bread", "company", };
qsort(arr4, 5, 10, cmp_string);
printf("string---> ");
for (int i = 0; i < 5; i++)
{
printf("%s ", arr4[i]);
}
printf("\n\n");
system("pause");
return 0;
}
运行结果:
看起来挺好用,写一个my_qsort: