今天給你們分享一下Java中幾種常見的排序算法的Java代碼算法
推薦一下個人Java學習羊君前616,中959,最後444.把數字串聯起來! ,羣裏有免費的學習視頻和項目給你們練手。大神有空時也會帶帶你們的,學Java的過程當中必定要多問多記,不要怕問題,要去主動的解決問題。編程
冒泡排序數組
選擇排序學習
插入排序3d
歸併排序視頻
例如:降序排{10,5,9,6}分爲{10,5},{9,6}而後{5,10},{6,9}而後完成blog
快速排序排序
就最後一個快速排序可能你們看不太懂,我就舉個例子吧變量
開始輸入如下數組循環
建立變量i=0(指向第一個數據), j=5(指向最後一個數據), k=6(賦值爲第一個數據的值)。
咱們要把全部比k小的數移動到k的左面,因此咱們能夠開始尋找比6小的數,從j開始,從右往左找,不斷遞減變量j的值,咱們找到第一個下標3的數據比6小,因而把數據3移到下標0的位置,把下標0的數據6移到下標3,完成第一次比較:
i=0 j=3 k=6
接着,開始第二次比較,此次要變成找比k大的了,並且要從前日後找了。遞加變量i,發現下標2的數據是第一個比k大的,因而用下標2的數據7和j指向的下標3的數據的6作交換,數據狀態變成下表:
i=2 j=3 k=6
稱上面兩次比較爲一個循環。
接着,再遞減變量j,不斷重複進行上面的循環比較。
在本例中,咱們進行一次循環,就發現i和j「碰頭」了:他們都指向了下標2。因而,第一遍比較結束。獲得結果以下,凡是k(=6)左邊的數都比它小,凡是k右邊的數都比它大:
若是i和j沒有碰頭的話,就遞加i找大的,尚未,就再遞減j找小的,如此反覆,不斷循環。注意判斷和尋找是同時進行的。
而後,對k兩邊的數據,再分組分別進行上述的過程,直到不能再分組爲止。
注意:第一遍快速排序不會直接獲得最終結果,只會把比k大和比k小的數分到k的兩邊。爲了獲得最後結果,須要再次對下標2兩邊的數組分別執行此步驟,而後再分解數組,直到數組不能再分解爲止(只有一個數據),才能獲得正確結果。
最後須要注意兩點(Java學習交流羊君前六一六,中九五九,最後四4四.把數字串聯起來!天天都會精挑細選一個項目新玩法出來詳細講解,分享!包括答疑解惑! )
冒泡排序與選擇排序有點相似,都是先經過依次比較將最小/大的元素放到最後;不一樣的是冒泡排序一次操做中,每次比較後,若須要都進行位置交換;而選擇排序是每次比較以後,將最小的值的位置記錄下來,最後與末尾位置交換。
插入排序的特色是從序列的第二個元素開始,與第一個元素排序,完成一輪;第二輪從第三個元素,依次與前面比較,而後排序, 其實就是作冒泡排序。
以上均假設數組的長度爲n
這幾種排序算法,只是簡單實現了排序的功能,還有待改進,望指教,你們有什麼別的算法也能夠分享一下