头文件:include <stdlib.h>
作用:快速排序
函数原型:
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );
使用:
? ? ? ? ? ?使用格式:qsort(待排序的一组数据,待排序的元素个数,每个元素所占字节大小,一个比较函数的函数名)
? 该比较函数的:int 函数名 (const void*数据1,const void*数据2)
排序int类型:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int px(const void*a , const void*b)//比较每对元素的函数
{
return *(int*)a - *(int*)b;//需要强转成待排序的数组的元素类型
}
int main()
{
int aa[] = { 9,8,7,6,5,4,3,2,1 };
qsort(aa, 9, 4, px);//升序排序aa,9个元素,每个元素是4个字节,比较每对元素的函数
int i = 0;
for (i = 0; i < 9; i++)
{
printf("%d ", aa[i]);//打印数组
}
}
排序char类型:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int px(const void* a, const void* b)//比较每对元素的函数
{
return *(char*)a - *(char*)b;//需要强转成待排序的数组的元素类型
}
int main()
{
char aa[] = {"abcdef"};
qsort(aa, 6, 1, px);//升序排序aa,6个元素,每个元素是1个字节,比较每对元素的函数
int i = 0;
for (i = 0; i < 6; i++)
{
printf("%c ", aa[i]);//打印数组
}
}
排序结构体类型:
struct aaa//结构体
{
int a;
char b;
};
int px(const void* x, const void* y)//qsort第四个参数
{
return (((struct aaa*)x)->a) - (((struct aaa*)y)->a);//结构体中的a元素
}
int main()
{
struct aaa aa[3] = { {5,'c'},{7,'b'},{4,'a'} };
qsort(aa, 3, sizeof(aa[0]), px);
}
结果:
|