码迷,mamicode.com
首页 > 编程语言 > 详细

模拟实现qsort函数 qsort---万用排序

时间:2020-11-02 09:48:46      阅读:22      评论:0      收藏:0      [点我收藏+]

标签:更改   替换   code   数字   print   def   main   冒泡排序   printf   

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void swap(char*a, char*b, int wid){ //因为我们不知道要替换的两个值占内存多大 //所以选择把这个值变成char类型,char字节占一个字节 //而传进去的wid就是一个数组的元素有多少个字节 //将a和b交换 int i = 0; for (i = 0; i < wid; i++, a++,b++) { char tmp = *a; *a = *b; *b = tmp; } } int duibi(void*a, void*b){ //这里是可更改的函数,作用是用传进来的数组的第一个数减去第二个数得到一个大于0等于0和小于0的数字 //大于0则a>b 小于0则a<b 等于0则a=b return *(int*)a - *(int*)b; } void mppx(void*suzu, int sz, int wid, int(*cmp)(void*e1,void*e2)){ int i = 0; for ( i = 0; i < sz-1; i++) { int j = 0; for ( j = 0; j < sz-1-i; j++) { //替换 if (cmp((char*)suzu + j*wid, (char*)suzu + (j+1)*wid)>0) //指针加减 { swap((char*)suzu + j*wid, (char*)suzu + (j + 1)*wid,wid); } } } } void intlx(){ int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; int sz = sizeof(arr) / sizeof(arr[0]); int i = 0; mppx(arr, sz, sizeof(arr[0]), duibi); //万用冒泡排序,适用于任何类型的比较 //mppx(数组,元素个数,单个元素个数占用的内存,进行比较的函数) for ( i = 0; i < sz; i++) { printf("%d", arr[i]); } } int main(){ intlx(); return 0; }

模拟实现qsort函数 qsort---万用排序

标签:更改   替换   code   数字   print   def   main   冒泡排序   printf   

原文地址:https://blog.51cto.com/14893161/2541838

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!