已解决
【qsort学习及改造冒泡排序能排序任何数】
来自网友在路上 11068106提问 提问时间:2023-11-22 21:06:26阅读次数: 106
最佳答案 问答题库1068位专家为你答疑解惑
qsort学习及改造冒泡排序能排序任何数
- qsort的使用
qsort的使用
这个函数也不是很复杂!!!
qsort(void*base,size_t num,size_t width,int(int (__cdecl *compare )(const void *elem1, const void *elem2 )))
void * base,为数组的基地址,size_t num为数组的元素个数,size_t width 元素的大小,也就是偏移量,int(int (__cdecl *compare )(const void *elem1, const void *elem2 ))这个是函数指针,用来接受函数的地址,elem1指向第一个比较元素的地址,elem2指向第二个比较元素的地址!!!
int cmp_int(const void* p1, const void* p2)
{return *(int*)p1 - *(int*)p2;
}int main()
{int arr[10] = { 5,3,2,1,6,7,9,8,4,0 };int sz = sizeof(arr) / sizeof(int);qsort(arr, sz, sizeof(int), cmp_int);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}
下面模拟的通用的冒泡排序!!!
void Swap(char* buffer1, char* buffer2, size_t width)
{for (int i = 0; i < width; i++){char tmp = *buffer1;*buffer1 = *buffer2;*buffer2 = tmp;buffer1++;buffer2++;}
}void bubble_sort(void* base,size_t num,size_t width,int (*cmp)(const void* p1,const void* p2))
{for (int i = 0; i < num-1; i++){for (int j = 0; j < num - 1 - i; j++){//把每次比较的元素的首地址,传到p1和p2;if ((*cmp)((char*)(base)+j * width, (char*)(base)+(j + 1) * width) > 0) {//交换Swap((char*)(base)+j * width, (char*)(base)+(j + 1) * width,width);}}}
}int cmp_int(const void* p1, const void* p2)
{return *(int*)p1 - *(int*)p2;
}int main()
{int arr[10] = { 5,3,2,1,6,7,9,8,4,0 };int sz = sizeof(arr) / sizeof(int);bubble_sort(arr, sz,sizeof(int),cmp_int);for (int i = 0; i < sz; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
完结!!!
查看全文
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- CSS中常用的伪元素选择器
- XmlElement注解在Java的数组属性上,以产生多个相同的XML元素
- Web 自动化神器 TestCafe(二)—元素定位篇
- 代码随想录算法训练营第一天|数组理论基础,704. 二分查找,27. 移除元素
- 代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
- JAXB:用XmlElement注解复杂类型的Java属性,来产生多层嵌套的xml元素
- Arcgis js Api日常天坑问题3——加载geojson图层,元素无属性
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 力扣.82删除链表中的重复元素(java语言实现)
猜你感兴趣
版权申明
本文"【qsort学习及改造冒泡排序能排序任何数】":http://eshow365.cn/6-41979-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!