冒泡排序
来源:互联网 发布:php培训班多少钱 编辑:程序博客网 时间:2024/06/05 16:40
public class BubbleSort { /** * 思路:每次内循环使相邻元素有序,单次循环后最大值沉底(升序时) * 之后缩短内循环范围,继续上述操作,但是 有个问题,太冗杂 * 时间复杂度:O(N^2) * 空间复杂度:O(1) */ public static int[] bubble_one(int[] arrays,int length,boolean isUp){ int tmp; for(int i = 0;i < length-1;i++){ for(int j = 0;j < length-1-i;j++){ if((arrays[j] > arrays[j+1])&&(isUp == true)){ tmp = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = tmp; }else if((arrays[j] < arrays[j+1])&&(isUp == false)){ tmp = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = tmp; } } } return arrays; } /** * 双向冒泡算法,在单向冒泡的基础上升级为往两边冒泡 * */ public static int[] bubble_two(int[] arrays,int length,boolean isUp){ int head_index = 0; int foot_index = length-1; int tmp; int index = 0; while(head_index < foot_index){ for(int i = head_index;i<foot_index;i++){ if((arrays[i] > arrays[i+1])&&(isUp == true)){ index = i; tmp = arrays[i]; arrays[i] = arrays[i+1]; arrays[i+1] = tmp; }else if((arrays[i] < arrays[i+1])&&(isUp == false)){ index = i; tmp = arrays[i]; arrays[i] = arrays[i+1]; arrays[i+1] = tmp; } } foot_index = index; for(int j = foot_index;j>head_index;--j){ if((arrays[j] < arrays[j-1])&&(isUp == true)){ index = j; tmp = arrays[j]; arrays[j] = arrays[j-1]; arrays[j-1] = tmp; }else if((arrays[j] > arrays[j-1])&&(isUp == false)){ index = j; tmp = arrays[j]; arrays[j] = arrays[j-1]; arrays[j-1] = tmp; } } head_index = index; } return arrays; }}
阅读全文
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 这五种特质让你顺利变身领导者
- 达内课程-HashMap
- 如何让win7桌面显示两个并列窗口边看视频边聊天
- windows下 mongo副本集配置 一主一从一仲裁
- JAVA几种常见的编码格式(转)
- 冒泡排序
- JS注入攻击
- 循环体内判断是否拖慢速度
- jdk8新特性汇总
- HDU
- [51nod1323]完美平方
- 程序员怎么获取股票实时数据,并进行技术指标分析呢?
- Java基础:深入理解Java的接口和抽象类
- 前端模块化,AMD与CMD的区别