【排序算法】 冒泡排序(java实现)
来源:互联网 发布:核酸数据库 编辑:程序博客网 时间:2024/06/14 19:02
1.基本思想:
依次两两比较,较小的浮上来,较大的往下沉。
2.算法分析:
平均时间复杂度:O(n2)
空间复杂度:O(1) (用于交换)
稳定性:稳定
3.算法实现:
public static void BubbleSort(int[] array){int tmp;for(int i=1 ; i< array.length-1 ; i++){for(int j =1; j < array.length-i; j++){if(array[j] < array[j-1]){ // 如果第j个元素 < 第j-1 个元素,交换位置,将大元素往后挪(下沉)tmp=array[j];array[j] = array[j-1];array[j-1] = tmp;}}}}
4.算法优化:
加入一标志性变量flag,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程。
<span style="white-space:pre"></span>public static void BubbleSort(int[] array){int tmp;boolean flag = true; //记录是否存在交换for(int i=1 ; i< array.length-1 ; i++){ flag = false;for(int j =1; j < array.length-i; j++){if(array[j] < array[j-1]){tmp=array[j];array[j] = array[j-1];array[j-1] = tmp;flag = true; }}if(! flag) break; ////上一趟比较中不存在交换,则退出排序}}
传统的排序算法在一次排序中,只能找到一个最大值或最小值, 考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以确定两个最终值(最大者和最小者) , 从而使排序次数减少。
<span style="white-space:pre"></span>public static void Bubble2Sort(int[] array){int low= 0 , high = array.length -1;int tmp;while(low < high){//正向,确定最大值for(int i =low+1;i < high +1; i++){if (array[i] < array[i-1]){tmp=array[i];array[i] = array[i-1];array[i-1] = tmp;}}low++;//反向冒泡,确定最小值for(int i =high-1 ;i >= low; i-- ){if (array[i] < array[i-1]){tmp=array[i];array[i] = array[i-1];array[i-1] = tmp;}}high--;}}
0 0
- java实现冒泡排序算法
- Java实现冒泡排序算法
- JAVA实现冒泡排序算法
- java实现冒泡排序算法
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- java实现冒泡排序算法
- 冒泡排序算法java实现
- Java实现冒泡排序算法
- Java实现冒泡排序算法
- 算法--冒泡排序-Java实现
- Java实现冒泡排序算法
- java 排序算法实现 其一:冒泡排序
- Java实现排序算法之冒泡排序
- SUN dataset图像数据集下载
- 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色
- springMVC读取jason的支持
- RecyclerView的使用心得
- 谷歌chrome浏览器的源码分析(一)
- 【排序算法】 冒泡排序(java实现)
- 易语言学习第三十二课-----服务器和客户(下)
- 矩阵取数
- ue4 RepNotify ReplicatedUsing 区别
- 谷歌chrome浏览器的源码分析(二)
- ACM 19 擅长排列的小明 java
- POJ1182-食物链
- iOS开发-使用Charles进行网络抓包总结
- Objective C的runtime