对整型数组,浮点型数组,结构体数组中的类型变量进行排序。内容涉及到函数指针来实现排序,利用qsort函数的类型创建一个相似的bubble

您所在的位置:网站首页 查找结构体数组中的元素 对整型数组,浮点型数组,结构体数组中的类型变量进行排序。内容涉及到函数指针来实现排序,利用qsort函数的类型创建一个相似的bubble

对整型数组,浮点型数组,结构体数组中的类型变量进行排序。内容涉及到函数指针来实现排序,利用qsort函数的类型创建一个相似的bubble

2023-03-28 10:07| 来源: 网络整理| 查看: 265

对整型数组,浮点型数组,结构体数组中的类型变量进行排序。内容涉及到函数指针来实现排序,利用qsort函数的类型创建一个相似的bubble_sort函数 原创

小海尖尖 2023-03-26 12:09:29 博主文章分类:课程学习代码 ©著作权

文章标签 i++ #include 数组 函数指针 文章分类 代码人生 在51CTO的第一篇博文

©著作权归作者所有:来自51CTO博客作者小海尖尖的原创作品,请联系作者获取转载授权,否则将追究法律责任

1.对不同数组进行排序

#include #include #include //对整型数组进行排序,函数test1(); int int_cmp(const void* e1, const void* e2) { return *(int*)e1 - *(int*)e2; } void test1() { int i = 0; int arr[] = { 9,8,7,6,5,4,3,2,1,0 }; int sc = sizeof(arr) / sizeof(arr[0]); qsort(arr, sc, sizeof(arr[0]), int_cmp); for (i = 0; i < sc; i++) { printf("%d\n", arr[i]); } } //对浮点型数组进行排序,函数test2(); int float_cmp(const void* e1, const void* e2) { if ((*(float*)e1 - *(float*)e2) > 0) { return 1; } else if ((*(float*)e1 - *(float*)e2) == 0) { return 0; } else { return -1; } } void test2() { float f[] = { 1.0,2.0,3.0,4.0 }; int sc = sizeof(f) / sizeof(f[0]); qsort(f, sc, sizeof(f[0]), float_cmp); int i = 0; for (i = 0; i < sc; i++) { printf("%f\n", f[i]); } } //对结构体变量进行排序 int st_price_cmp(const void* e1, const void* e2) { return ((struct book*)e1)->price - ((struct book*)e2)->price; } //price排序规则; int st_name_cmp(const void* e1, const void* e2) { return strcmp(((struct book*)e1)->name, ((struct book*)e2)->name); } //name排序规则; struct book { char name[20]; short price; }; //创建一个结构体变量 //对结构体变量进行排序,函数test3(); void test3() { struct book s[] = { {"高级程序设计",20}, {"高数",50}, {"大学英语",40},}; int sc = sizeof(s) / sizeof(s[0]); //初始化结构体变量,并算出元素的长度 //对结构体中name型进行排序,利用库函数qsort qsort(s, sc, sizeof(s[0]), st_name_cmp); int j = 0; for (int j = 0; j < sc; j++) { printf("%s\n", s[j].name); } //对结构体中的price进行排序,利用库函数qsort;可以使用函数指针合并st_name_cmp、st_price_cmp; qsort(s, sc, sizeof(s[0]), st_price_cmp); int i = 0; for (int i = 0; i < sc; i++) { printf("%d\n", s[i].price); } } int main() { test1(); test2(); test3(); return 0; }

2.对float、int、结构体类型通用冒泡排序

#include #include #include int int_cmp(const void* e1, const void* e2) { return *(int*)e1 - *(int*)e2; } void swap(char* c1, char* c2, int width) { int i = 0; for (i = 0; i < width; i++) { char tmp = *c1; *c1 = *c2; *c2 = tmp; c1++; c2++; } } struct stu { char name[15]; int num[20]; }; int cmp_struct_by_name(const void* e1, const void* e2) { return strcmp(((struct stu*)e1)->name, ((struct stu*)e2)->name); } void bubble_sort(void* base, int sc, int width, int(*cmp)(const void* e1,const void* e2)) { int i = 0; for (i = 0; i < sc - 1; i++) { int j = 0; for (j = 0; j < sc - 1 - i; j++) { if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0) { swap((char*)base + j * width, (char*)base + (j + 1) * width,width); } } } } void test4() { int arr[] = { 1,2,3,4,5,6,7,8,9 }; int sc = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, sc, sizeof(arr[0]),int_cmp); int j = 0; for (j = 0; j < sc; j++) { printf("%d\n", arr[j]); } } void test5() { struct stu c1[] = { {"张三",2021},{"李四",2022},{"王五",2020} }; int sc = sizeof(c1) / sizeof(c1[0]); bubble_sort(c1, sc, sizeof(c1[0]),cmp_struct_by_name); int i = 0; for(int i=0;i 收藏 评论 分享 举报

上一篇:对整型数组,浮点型数组,结构体数组中的类型变量进行排序。内容涉及到函数指针来实现排序,利用qsort函数的类型创建一个相似的bubble_sort函数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3