冒泡排序及其改进算法
来源:互联网 发布:随身带着淘宝去异界295 编辑:程序博客网 时间:2024/05/21 17:17
将数组a[10] = {7,2,9,4,1,3,8,6,5,0}从小到大排序并打印结果
打印函数:
void printA(int *a,int len){int i;for(i = 0; i < len; i++){printf("%4d",a[i]);}printf("\n");}
交换两个元素的位置:将数组首地址及要交换的元素下标作为参数传入
void Swap(int *a,int i,int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}
冒泡排序:冒泡排序外层循环控制轮数,每次从前往后找出一个最大的数沉底
void bubble(int *a,int len){int i,j;for(i = 0; i < len-1; i++){for(j = 0; j < len-1-i; j++){if(a[j] > a[j+1]){Swap(a,j,j+1);}}}}
main调用int main(){int a[10] = {7,2,9,4,1,3,8,6,5,0};int len = sizeof(a)/sizeof(a[0]);bubble(a,len);printA(a,len);return 0;}
下面为冒泡排序的改进算法:鸡尾酒排序
鸡尾酒排序在冒泡排序基础上加入一个循环,在从前往后找到一个最大数沉底后从后往前找一个最小数浮顶
void cocktail(int *a,int len){int i;int left = 0;int right = len-1;while(left < right) //左右边界控制循环次数,当左右边界相遇结束循环{for(i = left; i < right; i++) //从左往右,找出一个最大数沉底{if(a[i] > a[i+1]){Swap(a,i,i+1);}}right--; //右边界左移一个for(i = right; i > left; i--) //从右往左,找出一个最小数浮顶{if(a[i-1] > a[i]){Swap(a,i-1,i);}}left++; //左边界右移一个}}
阅读全文
0 0
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 冒泡排序及其改进算法
- 排序算法之冒泡排序及其改进
- 排序算法--选择+冒泡及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡排序及其改进
- 冒泡算法及其改进
- 排序算法之五--冒泡排序及其改进
- 0032冒泡算法升序排序及其改进算法
- 读写锁 ReentrantReadWriteLock
- 大数据究竟是什么?一篇文章让你认识并读懂大数据
- Can you answer these queries?
- (4)ODI环境搭建_初始化资料档案库(RCU)
- TCP/IP,必须掌握的十个问题
- 冒泡排序及其改进算法
- HDOJ1342 Lotto(DFS,回溯)
- Mysql 数据查询优化
- Xmanager Enterprise 4安装以及注册码
- Python 面向对象(高级教程)
- 集合继承关系图解
- 彻底删除卸载jdk
- 面试 快速排序
- (5) ODI环境搭建_安装Oracle中间件