冒泡排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

算法描述:

  1. i从0开始,i与i+1比较,如果i>i+1,那么就互换
  2. i不断增加,直到i<n-1(n是数组元素的个数,n-1是数组已经最后一个元素) ,一趟下来,可以让数组元素中最大值排在数组的最后面

// 刚写的冒泡排序,不足之处后面完善
public class BubbleSort {

   protected  int[] arrays;


   int Sort(){

       // 记录执行了多少趟
       int num = 0;

       // 记录是否发生了置换, false 表示没有发生置换、 true 表示发生了置换
       boolean isChange;

       // 临时变量,用于置换
       int temp;

       // 外层循环-排序趟数-(n-1)
       for (int i=0;i<arrays.length-1;i++){

           isChange=false;

           // 内层循环-本趟中的置换次数
           for (int j=0;j<arrays.length-i-1;j++){

               // 前一位与后一位与前一位比较,如果前一位比后一位要大,那么交换
               // 并不需要与最后一位比较了,因为在第一趟排序完了,最后一位已经是最大的数了
               if(arrays[j]>arrays[j+1]){
                   temp = arrays[j];
                   arrays[j] = arrays[j+1];
                   arrays[j+1] = temp;
                   isChange=true;
               }
           }

           // 如果进到这里面了,说明发生置换了
           // 如果在某躺排序中没有发生交换位置,那么我们可以认为该数组已经排好序了
           if(isChange==false){
               break;
           }

           num++;
       }

       return num;
   }
}

书籍推荐