目录
前言
本篇文章介绍库函数qsort()的使用以及利用冒泡排序的思想模拟对任何类型的数据进行排序。
一、qsort()的介绍及使用
1.1 qsort()的介绍
下面是cplusplus对qsort()的叙述,详情https://cplusplus.com/reference/cstdlib/qsort/
qsort()可以对任意类型的数据进行排序。
对qsort()参数进行介绍:
void* base:指向需要被排序数组的起始位置。
size_t num:待排序的元素个数
size_t size:待排序的元素的大小(单位:字节)
int (*compar)(const void*, const void*):函数指针,指向比较函数,可以实现自定义比较规则。
1.2 qsort()的使用
1.2.1 使用qsort|()对整型数组按照升序排序
//升序
int compare_asc(const void* e1, const void* e2)
{
return (*(int*)e1 - *(int*)e2);
}
int main()
{
int arr[] = {
40, 10, 100, 90, 20, 25 };
int sz = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz, sizeof(arr[0]), compare_asc);
int i = 0;
for (i = 0; i < sz; i++)
printf("%d ", arr[i]);
return 0;
}
1.2.2 使用qsort()对整型数组按照降序排序
//降序
int compare_dec(const void* e1, const void* e2)
{
return (*(int*)e2 - *(int*)e1);
}
int main()
{
int arr[] = {
40, 10, 100, 90, 20, 25 };
int sz = sizeof(arr) / sizeof(arr[0]);
qsort(arr, sz, sizeof(arr[0]), compare_dec);
int i = 0;
for (i = 0; i < sz; i++)
printf("%d ", arr[i]);
return 0;
}
1.2.3 使用qsort()对结构体数组数据进行排序
按照年龄升序排序:
//定义结构体
struct Stu {
char name[20];
int age;
float