普通冒泡排序法与通用冒泡排序法(C语言)
来源:互联网 发布:skype for ubuntu 14 编辑:程序博客网 时间:2024/06/06 03:30
一、普通冒泡排序法
#include<stdio.h>#include<Windows.h>#include<stdlib.h>#include<string.h>void bubble_sort(int arr[],int sz){int i = 0;int j = 0;for(i=0;i<sz-1;i++){for(j=0;j<sz-1-i;j++){if(arr[j] > arr[j+1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;}}}}int main(){int arr[] = {1,3,5,7,9,2,4,6,8,0};int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz);for(i=0;i<sz;i++){printf("%d ",arr[i]);}system("pause");return 0;}程序运行结果:
二、通用冒泡排序法
1、测试普通数组排序
#include<stdio.h>#include<Windows.h>#include<stdlib.h>#include<string.h>typedef struct S{char name[20];int age;}S;//按名字排序int cmp_by_name(const void *e1,const void *e2){return strcmp(((S*)e1)->name,((S*)e2)->name);}//按年龄排序int cmp_by_age(const void *e1,const void *e2){return ((S*)e1)->age - ((S*)e2)->age;}void _Swap(char*buf1,char*buf2,int sz){int i = 0;for(i=0;i<sz;i++){char tem = *buf1;*buf1 = *buf2;*buf2 = tem;buf1++;buf2++;}}int cmp_int (const void *e1,const void *e2){return *(int*)e1 - *(int*)e2;}//通用冒泡排序void bubble_sort(void*base,int sz,int width,int(*cmp)(const void*e1,const void*e2)){int i = 0;int j = 0;for(i=0;i<sz-1;i++){for(j=0;j<sz-1-i;j++){if(cmp((char*)base+j*width,(char*)base+(j+1)*width)>0){_Swap((char*)base+j*width,(char*)base+(j+1)*width,width);}}}}int main(){int arr[] = {1,3,5,7,9,2,4,6,8,0};/*S arr[] = {{"zhangsan",20},{"lisi",5},{"wangwu",36}};*/int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz,sizeof(arr[0]),cmp_int);for(i=0;i<sz;i++){printf("%d ",arr[i]);/*printf("%s ",arr[i].name);*/}system("pause");return 0;}程序运行结果:
2、测试按结构体名字排序
main程序如下所示,其余部分与测试普通数组排序的程序保持一致。
int main(){/*int arr[] = {1,3,5,7,9,2,4,6,8,0};*/S arr[] = {{"zhangsan",20},{"lisi",5},{"wangwu",36}};int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz,sizeof(arr[0]),cmp_by_name);for(i=0;i<sz;i++){/*printf("%d ",arr[i]);*/printf("%s ",arr[i].name);}system("pause");return 0;}
程序运行结果如下所示:3、测试按结构体年龄排序
main程序如下所示,其余部分与测试普通数组排序的程序保持一致。
int main(){/*int arr[] = {1,3,5,7,9,2,4,6,8,0};*/S arr[] = {{"zhangsan",20},{"lisi",5},{"wangwu",36}};int sz = sizeof(arr)/sizeof(arr[0]);int i = 0;bubble_sort(arr,sz,sizeof(arr[0]),cmp_by_age);for(i=0;i<sz;i++){/*printf("%d ",arr[i]);*/printf("%s ",arr[i].name);}system("pause");return 0;}
程序运行结果如下所示:
阅读全文
0 0
- 普通冒泡排序法与通用冒泡排序法(C语言)
- C语言--冒泡排序法
- C语言 冒泡排序法
- 【语言-C++】冒泡法排序
- 冒泡排序法(C语言)
- 冒泡法排序(C语言)
- 最优冒泡法排序(C语言)
- 冒泡法排序(c语言)
- C语言~模拟实现通用冒泡排序
- (c语言)选择排序法和冒泡排序法
- C语言:冒泡排序法(升序排序法)
- C语言——通用的冒泡排序(qsort)
- C语言选择排序与冒泡排序
- 冒泡法排序(C#)
- 冒泡法排序(C++)
- 【c++】冒泡法排序
- 冒泡排序(C语言)
- 冒泡排序(C语言)
- Python基础学习-MariaDB基础学习
- git命令大全
- NOIP2015子串(洛谷2679)
- BZOJ4128: Matrix 矩阵BSGS
- 使用artTemplate模板开发网站(node.js + express环境)
- 普通冒泡排序法与通用冒泡排序法(C语言)
- 快速理解:JDK8 default 函数 和 Opetional<T> 作用
- Call to undefined method Illuminate\Database\Query\Builder::links()
- Linux初窥:系统管理之(进程管理、定时任务、系统监控)
- Hadoop大数据生态系统及常用组件简介
- oracle数据库内存结构pga/sga/uga做比较分析
- win10下vs2013+CUDA8.0+cuDNN8.0的caffe编译过程
- Appium基础篇7-元素定位之by_android_uiautomator
- PAT_A 1051. Pop Sequence (25)