冒泡排序之java数组实现
来源:互联网 发布:csdn黑马程序员 编辑:程序博客网 时间:2024/06/08 00:05
冒泡排序的算法思想:比较相邻两个元素的关键字值,如果反序,则交换。若按照升序排序,每一趟将扫描数据序列的最大值到最后位置。
即最多扫描n-1次,每次确定一个值。下面是一个数组的冒泡排序实现:
/* * 冒泡排序是稳定的 * 从小到大冒泡排序 * 冒泡排序时间效率在O(n)和O(n*n)之间 */public static int[] bubbleSortAsc(int data[]){boolean exchange=true; //默认初始有交换for(int i=1;i<data.length&&exchange;i++) // 最多循环data.length-1次 exchange=false停止{exchange=false; //进入循环后exchange=falsefor(int j=0;j<data.length-i;j++){//大就交换位置if(data[j]>data[j+1]){int temp=data[j];data[j]=data[j+1];data[j+1]=temp;exchange=true; //如果有交换exchange=true 那么意味着可能会继续循环}}}return data;}交换位置的方法可以提取为一个方法:
/* * 定义数组元素交换 * 数组data的x下标和y下标的交换 */private static int[] swap(int data[],int x,int y){int temp=data[x];data[x]=data[y];data[y]=temp;return data;}冒泡排序的exchange标记可以避免不必要的比较,如果没有这个标记,就像下面这样:
/* * 冒泡排序 没有交换标记 * 从后往前冒泡 */public static int[] buuleSort(int[] data){//从后往前 n-1次扫描for(int i=data.length-1;i>0;i--){//比较for(int j=data.length-1;j>=data.length-i;j--){if(data[j]<data[j-1])swap(data, j, j-1);}}return data;}这样的话虽然也可以实现排序,但是它的比较次数是固定的,与需要排序的序列的顺序无关,因此正确的是最上面那样的写法。
冒泡排序是稳定的排序算法,要排序的序列有序时,适宜采用冒泡排序。
阅读全文
0 0
- 冒泡排序之java数组实现
- Java数组实现冒泡排序
- Java 数组实现冒泡排序
- Java 数组之冒泡排序
- 排序之冒泡排序(数组实现)
- Java实现之冒泡排序
- 冒泡排序之java实现
- 冒泡排序之Java实现
- 冒泡排序之java实现
- 冒泡排序之Java实现
- java之数组冒泡排序和list冒泡排序
- Java通过冒泡法实现数组排序
- java用冒泡发实现数组排序
- Java 数组实现冒泡排序算法
- 交换排序之冒泡排序Java实现
- Java实现排序算法之冒泡排序
- java实现交换排序之冒泡排序
- java实现排序算法之冒泡排序
- Android开发之时间选择器
- Vim YouCompleteMe Mac OS C family 系统库函数不能自动补全
- Android
- SPI子系统分析之四:驱动模块
- protobuf的Required,Optional,Repeated限定修饰符
- 冒泡排序之java数组实现
- C++中 变量y0y1等变量 的冲突问题
- LeetCode-627. Swap Salary
- http与https区别及https是如何保障安全性
- swift xxxfile no find / bridging no exit
- 双向链表
- layUI初步使用
- 算法分析与设计丨第三周丨LeetCode(6)——Find Largest Value in Each Tree Row(Medium)
- 数据挖掘中的可视化方法