实现功能:既能排序整型数,也可以排序字符串 代码如下: #include <stdio.h> #include <string.h> int int_cmp(const void *p1, const void *p2) { if (*(int *)p1 > *(int *)p2) { return 1; } else if (*(int *)p1 == *(int *)p2) { return 0; } else { return -1; } } void swap(void *p1, void *p2, int size) { int i = 0; for (i = 0; i < size; i++) { char tmp = *((char *)p1 + i); *((char *)p1 + i) = *((char *)p2 + i); *((char *)p2 + i) = tmp; } } void bubble(void *base, int count, int size, int(*cmp)(const void *, const void *)) { int i = 0; int j = 0; for (i = 0; i < count - 1; i++) { for (j = 0; j < count - i - 1; j++) { if (cmp((char *)base +size*j,(char *)base+size*(j+1))>0) { swap((char *)base + size*j, (char *)base + size*(j + 1), size); } } } } int str_cmp(const void *p1, const void *p2) { return strcmp((char *)(*(int *)p1), (char *)(*(int *)p2)); } int main() { //int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 }; char *arr[] = { "dddd", "bbbb", "cccc", "aaaa" }; int i = 0; bubble(arr, sizeof(arr) / sizeof(arr[0]), sizeof(char *), str_cmp); for (i = 0; i < 4; i++) { printf("%s\n", arr[i]); } printf("\n"); return 0; }
【C语言】 使用回调函数实现冒泡排序
原创
©著作权归作者所有:来自51CTO博客作者Vs吕小布的原创作品,谢绝转载,否则将追究法律责任
上一篇:【C语言】 函数指针小谈
下一篇:【C语言】 动态开辟二维数组

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
在C语言中使用回调函数
在C语言中使用回调函数回调函数的应用场景事件驱动机制通信协议的“推”模
回调函数 C语言 讲解 使用场景 举例 -
【C语言】【笔试题】使用回调函数编写冒泡排序,可以排序整形数组,也可以排序字符串
【思路分析】 要实现一个功能对于接收的不同的类型的数组,都可以使用冒泡排序来使其有序排序,我们需要使用回调函数来实现这个功能,对于函数设计,需要使用函数的指针,需要注意的是,在使用函数的指针时我们需要用对应的函数指针类型来接收函数的地址,对于函数指针的写法,就不介绍了,看代码即可。 首先接收的时候,对于不同的类型,需要进行不同的处理,所以对于接收到的类型,先用if语句来判断他的类型,再根据类型来选择处理方案,然后用户需要自己编写swap比较函数然后将swap函数的地址传给冒泡排序,这样就能实现相应的功能了。
C语言 使用回调函数编写冒泡排序 可以排序整形数组 也可以排序字符串 -
回调函数实现通用冒泡排序
回调函数实现通用冒泡排序
冒泡排序 回调函数 #include i++ -
冒泡排序(C语言实现)
冒泡排序的基本思想是:从前往后(或从后往前)两两比较相邻元素的值,若为逆序(即A[I-1]>A[I]),则交换它们,直到序
c语言 算法 数据结构 #include 冒泡排序 -
回调函数冒泡排序
回调函数冒泡排序
i++ 冒泡排序 待排序 -
[C语言] 冒泡排序
冒泡排序
冒泡排序