模拟实现qsort函数
来源:互联网 发布:php 多用户商城 编辑:程序博客网 时间:2024/06/04 22:37
模仿qsort的功能实现一个通用的冒泡排序
int cmp(const void*n1, const void*n2) //判断n1,n2元素大小,n1比n2大返回正数;小返回负数,相同返回0{return *(char*)n1 - *(char*)n2; //升序}void Swap(char *buf1, char* buf2, int width) //交换每个字节{int i = 0;for (i = 0; i < width; i++){char tmp = *buf1;*buf1 = *buf2;*buf2 = tmp;buf1++;buf2++;}}void bubble_sort(void *base, int sz, int width, int(*cmp)(const void* n1, const void*n2)) //模拟实现qsort{int i = 0;for (i = 0; i < sz - 1; i++){int j = 0;for (j = 0; j < sz - 1 - i; j++){int ret = cmp(((char*)base + (j*width)),((char*)base + (j + 1)*width));if (ret>0){Swap(((char*)base + (j*width)), ((char*)base + (j + 1)*width),width);}}}}int main(){int arr[] = { 1, 4, 7, 5, 6, 9 };bubble_sort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(arr[0]), cmp);int i = 0;for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++){printf("%d ", arr[i]);}printf("\n");char arr1[] = { 'a','f','y','w','b' };bubble_sort(arr1, sizeof(arr1) / sizeof(arr1[0]), sizeof(arr1[0]), cmp);for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++){printf("%c ", arr1[i]);}printf("\n");system("pause");return 0;}
运行结果: 0 0
- 模拟实现qsort函数
- 模拟实现qsort函数
- 模拟实现qsort函数
- 模拟实现库函数---qsort
- 回调函数,回调函数应用,qsort函数用法,以及模拟实现qsort函数
- 用冒泡排序的方法模拟实现qsort函数
- 实现qsort函数原型
- 回调函数,qsort函数,与qsort函数的模拟
- 利用冒泡排序法模拟qsort函数
- 库函数qsort函数的实现
- 用冒泡排序模拟实现qsort
- qsort函数的调用与实现
- 用冒泡排序法实现qsort函数
- C语言qsort()函数的实现
- qsort ()函数
- qsort函数
- qsort函数
- qsort函数
- JDBC中存在的问题
- JAVA如何实现发送短信
- IDEA使用mabaits generator逆向工程代码
- 各种参考博客
- centOS7 配置vsftpd
- 模拟实现qsort函数
- 1.配置基础环境
- android studio 2.4遇到问题小结
- 读书笔记《Effective C++》条款16:成对使用new和delete时要采取相同形式
- 函数、指针、数组的组合 及结构体和共用体
- 如何提前体验 Laravel 5.5
- mybatis框架原理
- 在Python中使用NLTK库实现对词干的提取的教程
- 【总结】嵌入式linux常用命令