冒泡排序算法原理

完全排序过程请参见动画演示http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/maopaopaixu.htm
首先你得知道的是冒泡排序法说的是:像气泡一样从下往上两两"碰撞"后轻的上浮,重的下沉。知道了这两点就差不多能写出来了,只是这里还有一个"哨兵",以前不知道它到底干嘛用的,
今天仔细看了下,如果在任一趟冒泡过程中都不满足arr[j] < arr[j - 1],那么很显然说明这组数值绝对是这样的  1,2,3,4,那么还排什么啊,直接跳出吧

public static void main(String[] args) {
  int[] arr = { 1, 2, 3 };
  BubbleSort bs = new BubbleSort();
  bs.bubbleSort(arr);
 }

 private void bubbleSort(int[] arr) {
  int tmp = 0;
  boolean flag = false;
  for (int i = 1; i < arr.length; i++) {
   flag = false;//注意理解此"哨兵"的作用,很容易忘记加这个判断
   for (int j = arr.length - 1; j >= i; j--) {
    if (arr[j] < arr[j - 1]) {
     tmp = arr[j - 1];
     arr[j - 1] = arr[j];
     arr[j] = tmp;
     flag = true;
    }
   }
   if (!flag) {
    break;// 或者return;
   }
  }

  for (int i : arr) {
   System.out.println(i);
  }
 }




   我的博客其它文章列表  
   http://my.oschina.net/helu

你可能感兴趣的:(数据结构,算法,冒泡排序)