排序算法之冒泡排序

原创 2016年08月31日 01:28:28

冒泡排序作为数据结构入门级的排序,优点是非常简单,但是性能实在太差,实际很少直接用冒泡排序,而且在相同时间复杂度的条件下,插入排序的性能要略优于冒泡,使得冒泡入门级的地位也岌岌可危,不过作为排序算法中的基石,还是要了解才行。

冒泡算法的要点:

  1. 算法思想
           冒泡算法是从数组最后一个元素开始,向前依次两两对比,把较小的数往前交换,类似于轻泡泡浮上水面,因此称作冒泡(同样,反之亦可,遍历所有元素对,把较大或较小的值移到一边),因此不难想到冒泡需要一个双循环进行对比。冒泡排序的总循环次数是固定的,即使是在一个大致有序的数组里,冒泡排序仍然要做很多无用功,为此,可以为已经有序的部分做上标记,使得冒泡排序时可以跳过这一段,性能提高一些。

  2. 代码部分
    冒泡排序部分(Bubble)
    package sort;
    
    public class Bubble extends BaseSort{
    
    	public static void bubbleSort(int[] arr) {
    		int arrL = arr.length;
    		boolean isSwap = true;
    		
    		for (int i = 0; i < arrL-1 && isSwap; i++) {
    			isSwap = false;
    			
    			for (int j = arrL-1; j > i; j--){
    				if (arr[j-1] > arr[j]){
    					swap(arr, j, j-1);
    					isSwap = true;
    				}
    			}
    		}
    	}
    	
    }
    
    

    数组排序基础类
    BaseSort)
    package sort;
    
    public class BaseSort {
    	
    	public static void swap(int[] arr, int i, int j) {
    		int c = arr[i];
    		arr[i] = arr[j];
    		arr[j] = c;
    	}
    	
    	public static void printArray(int[] arr) {
    		int bL = arr.length;
    		for(int i = 0; i < bL; i++) {
    			System.out.print(arr[i] + " ");
    		}
    	}
    }
    



  3. 代码说明
    两个循环,每次都从最后一个数开始,依次向前比较,把较小的数放在前面
    isSwap 表示是否交换过,true表示交换过,false表示没有,交换过则说明之前的数组元素不是按既定顺序排序,需要接着对比比较,而没有交换过表示之前的数组都已经按照既定顺序排序好,无需进行比较

自己写的冒泡排序算法

  • 2017年12月07日 14:25
  • 2KB
  • 下载

冒泡排序算法

  • 2013年08月06日 21:35
  • 2KB
  • 下载

【原创】增强版冒泡排序算法-java版

第N趟循环,如果已经没有移动元素的操作,说明排序已完成,循环应该退出,不必再执行后续的循环操作,因为就算比较也不会再有元素会被移动。增加此控制计数器。控制循环退出。...

冒泡排序算法

  • 2013年03月18日 12:01
  • 403B
  • 下载

冒泡排序算法

  • 2011年12月07日 20:48
  • 690B
  • 下载

征服面试官的冒泡排序算法

1:选择哪种方法实现排序? 2:如何用C语言实现冒泡排序? 3:如何实现一个通用的冒泡排序?...
  • dai_wen
  • dai_wen
  • 2017年12月05日 20:11
  • 59

冒泡排序算法

  • 2012年10月08日 11:34
  • 652B
  • 下载

java冒泡排序算法

  • 2015年08月30日 11:59
  • 230B
  • 下载

黑马程序员——C语言基础——冒泡排序算法探究

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • Elors
  • Elors
  • 2015年06月01日 16:30
  • 422

易语言冒泡排序算法

  • 2013年07月11日 19:21
  • 8KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法之冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)