通用冒泡排序(回调函数)
来源:互联网 发布:基于网格的聚类算法 编辑:程序博客网 时间:2024/06/05 12:40
一般冒泡排序
//冒泡排序算法void bubble_shot(int arr[],int len){ int i=0,j=0,temp=0; for(i=0;i<len-1;i++) for(j=0;j<len-i-1;j++) { if(arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } }}int main(void){ int arr[10]={4,8,5,7,2,1,9,3,1,5}; int sz=sizeof(arr)/sizeof(arr[0]); int i; bubble_shot(arr,sz); for(i=0;i<sz;i++) printf("%d\t",arr[i]) ; return 0;}通用
typedef struct S{ int a; char name[10];}S;//交换函数(按字节交换)void temp(const void* s1,const void* s2,int width){ char* p1=(char*)s1; char* p2=(char*)s2; char ch; while(width--) { ch=*p1; *p1=*p2; *p2=ch; p1++; p2++; }}//通用冒泡排序算法实现部分(升序)void bubble_shot(void* arr,int len,int width,int (*p)(const void* s1,const void* s2)){ int i=0,j=0; for(i=0;i<len-1;i++) for(j=0;j<len-i-1;j++) { if(p((char*)arr+j*width,(char*)arr+(j+1)*width)>0) { temp((char*)arr+j*width,(char*)arr+(j+1)*width,width); } }}//int型比较函数(前》后--返回小于0的数,后《前---返回大于0的数,相等分返回0,后面的比较结果输出一样)int int_int(const void* s1,const void* s2){ return *(int*)s1-*(int*)s2;}//char型比较函数int char_char(const void* s1,const void* s2){ return strcmp((char*)s1,(char*)s2);}//结构体中按名字排序int s_s_name(const void* s1,const void* s2){ return strcmp(((S*)s1)->name, ((S*)s2)->name) ;}//结构体中按int排序int s_s_int(const void* s1,const void* s2){ return (((S*)s1)->a,((S*)s2)->a);}//测试主函数int main(void){ int arr[10]={4,8,5,7,2,1,9,3,1,5}; int sz=sizeof(arr)/sizeof(arr[0]); S s[3]={{10,"zhangsan"},{4,"lisi"},{12,"wangwu"}}; int i; int sz1=sizeof(s)/sizeof(s[0]); //定义函数指针 int (*p_int)(const void* s1,const void* s2)=&int_int; int (*p_char)(const void* s1,const void* s2)=&char_char; int (*p_s_s_name)(const void* s1,const void* s2)=&s_s_name; int (*p_s_s_int)(const void* s1,const void* s2)=&s_s_int; //开始比较调用函数 bubble_shot(arr,sz,sizeof(arr[0]),p_int); printf("按int排序\n"); for(i=0;i<sz;i++) printf("%d\t",arr[i]) ; printf("\n"); bubble_shot(s,sz1,sizeof(s[0]),p_s_s_name); printf("结构体按name排序\n"); for(i=0;i<sz1;i++) printf("%s\t",s[i].name) ; printf("\n"); bubble_shot(s,sz1,sizeof(s[0]),p_s_s_int); printf("结构体按int排序\n"); for(i=0;i<sz1;i++) printf("%s\t",s[i].name) ; printf("\n"); return 0;}
冒泡排序
阅读全文
0 0
- 通用冒泡排序(回调函数)
- 回调函数实现通用冒泡排序
- 利用回调函数实现通用冒泡排序
- 使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
- 回调函数实现冒泡排序
- 回调函数实现冒泡排序
- 冒泡排序之回调函数!
- 用回调函数实现冒泡排序
- 用回调函数实现冒泡排序
- 【C语言】使用回调函数实现一个通用的冒泡排序,可以排序不同的数据类型。
- C语言冒泡排序之回调函数设计
- 【C语言】 使用回调函数实现冒泡排序
- 回调函数实现冒泡法的多种排序
- 使用回调函数实现qsort(冒泡排序)
- 通过冒泡排序(C语言实现)学习回调函数设计原理
- 回调函数应用(冒泡排序 既排整型数组 也可排字符串 )
- 通过冒泡排序的快速排序练习使用回调函数
- 采用回调函数的内部排序算法-插入排序,希尔排序,冒泡,快排,堆排,归并排,基数排序
- Hdu 6155 Subsequence Count 矩阵计算DP+线段树维护
- setsocket用法大全
- 关于BP你必须知道的十件事
- 立志向Keep进军!
- 22.平面列表
- 通用冒泡排序(回调函数)
- unity3d ulua framwork build打包后shader丢失的问题记录
- 分类-回归树模型(CART)在R语言中的实现
- centos使用vim命令出现E325错误解决方法
- js中的类型转换
- Java面试笔试题及答案(1)- 单选
- C数组与java数组在内存中的区别
- 正则表达式
- 自制单机五子棋