學習Java絕對要懂的,Java編程中最常用的幾種排序算法!


今天給大家分享一下Java中幾種常見的排序算法的Java代碼

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

推薦一下我的Java學習羊君前616,中959,最后444.把數字串聯起來!     ,群里有免費的學習視頻和項目給大家練手。大神有空時也會帶帶大家的,學Java的過程中一定要多問多記,不要怕問題,要去主動的解決問題。

冒泡排序

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

選擇排序

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

插入排序

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

歸並排序

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

例如:降序排{10,5,9,6}分為{10,5},{9,6}然后{5,10},{6,9}然后完成

快速排序

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

就最后一個快速排序可能大家看不太懂,我就舉個例子吧

開始輸入以下數組

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

創建變量i=0(指向第一個數據), j=5(指向最后一個數據), k=6(賦值為第一個數據的值)。

我們要把所有比k小的數移動到k的左面,所以我們可以開始尋找比6小的數,從j開始,從右往左找,不斷遞減變量j的值,我們找到第一個下標3的數據比6小,於是把數據3移到下標0的位置,把下標0的數據6移到下標3,完成第一次比較:

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

i=0 j=3 k=6

接着,開始第二次比較,這次要變成找比k大的了,而且要從前往后找了。遞加變量i,發現下標2的數據是第一個比k大的,於是用下標2的數據7和j指向的下標3的數據的6做交換,數據狀態變成下表:

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

i=2 j=3 k=6

稱上面兩次比較為一個循環。

接着,再遞減變量j,不斷重復進行上面的循環比較。

在本例中,我們進行一次循環,就發現i和j“碰頭”了:他們都指向了下標2。於是,第一遍比較結束。得到結果如下,凡是k(=6)左邊的數都比它小,凡是k右邊的數都比它大:

學習Java絕對要懂的,Java編程中最常用的幾種排序算法

如果i和j沒有碰頭的話,就遞加i找大的,還沒有,就再遞減j找小的,如此反復,不斷循環。注意判斷和尋找是同時進行的。

然后,對k兩邊的數據,再分組分別進行上述的過程,直到不能再分組為止。

注意:第一遍快速排序不會直接得到最終結果,只會把比k大和比k小的數分到k的兩邊。為了得到最后結果,需要再次對下標2兩邊的數組分別執行此步驟,然后再分解數組,直到數組不能再分解為止(只有一個數據),才能得到正確結果。

 

最后需要注意兩點(Java學習交流羊君前六一六,中九五九,最后四4四.把數字串聯起來!每天都會精挑細選一個項目新玩法出來詳細講解,分享!包括答疑解惑! )

 

  1. 冒泡排序與選擇排序有點類似,都是先通過依次比較將最小/大的元素放到最后;不同的是冒泡排序一次操作中,每次比較后,若需要都進行位置交換;而選擇排序是每次比較之后,將最小的值的位置記錄下來,最后與末尾位置交換。

  2. 插入排序的特點是從序列的第二個元素開始,與第一個元素排序,完成一輪;第二輪從第三個元素,依次與前面比較,然后排序, 其實就是做冒泡排序。

  3. 以上均假設數組的長度為n

這幾種排序算法,只是簡單實現了排序的功能,還有待改進,望指教,大家有什么別的算法也可以分享一下學習Java絕對要懂的,Java編程中最常用的幾種排序算法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM