冒泡排序最佳化JAVA

來源:互聯網
上載者:User

標籤:pre   tcl   []   排序演算法   實現   title   元素   test   說明   

本文對傳統的冒泡排序進行了一些最佳化,減少了迴圈次數。時間複雜度若檔案的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數 C 和記錄移動次數 M 均達到最小值: C(min)=n-1 , M(min)=0 。所以,冒泡排序最好的時間複雜度為 O(n);若初始檔案是反序的,需要進行  趟排序。每趟排序要進行  次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:冒泡排序的最壞時間複雜度為O(n^2) 。綜上,因此冒泡排序總的平均時間複雜度為O(n^2) 。演算法穩定性冒泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以冒泡排序是一種穩定排序演算法。
 1 /** 2  * 冒泡排序 JAVA 3  * 最佳化後的冒泡排序 4  * 增加一個isSort本輪是否進行了排序的判斷,如果沒有進行排序則說明排序已經結束直接退出 5  * @author Administrator 6  * @time 20160731 7  */ 8 public abstract class BubblingSort { 9     ////////////////開始冒泡排序10     public static int[] Sort(int[] array )11     {12         boolean isSort=false;//判斷是否進行過排序,預設為沒有進行排序,如果沒有進行排序則直接結束13         for (int i = 0; i < array.length-1; i++) {14             isSort=false;//每輪排序前先將排序標識置位false15             for (int j = 0; j < array.length-i-1; j++) {16                 if(array[j]>array[j+1])17                 {18                     int temp =array[j+1];19                     array[j+1]=array[j];20                     array[j]=temp;21                     isSort=true;//如果為true則本輪進行了交換,繼續下一輪22                 }23             }24             if(!isSort)break;//如果本輪沒有進行過迴圈,結果為false直接跳出,不進行下一輪的檢索25         }26         return array;    //return array27     }28     ///////////結束冒泡排序29 }

自己在裡面加了個判斷是否已經排序結束,如果排序已經完成,則立即結束排序,不進行繼續迴圈檢測!

我在另一個類裡面調用的方法:

 1 public class arithmetic_TestClass { 2     public static void main(String[] args) { 3         //測試數組 int 型 4         int array[]={4,9,5,3,7,6,8,3,2,1};     5  6         //冒泡排序 最佳化過的冒泡排序 7         array=BubblingSort.Sort(array); 8          9         for (int i : array) {10             System.out.print(i+"  ");11         }12 13     }14 }

執行的結果如下:

1  2  3  3  4  5  6  7  8  9  

成功實現!

冒泡排序最佳化JAVA

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.