更新時間:2020-11-02 17:53:52 來源:動力節點 瀏覽1586次
數組,其實就是一個給定了大小給定了類型的容器,在這容器中有你設定的元素,你可以對這些元素進行各種升降排列,或者找出其中特殊的元素并進行一系列的運算。數組,本身是有序的元素序列,本文我們就來看看Java數組排序的幾個方法。
一、冒泡排序
舉 個 栗 子:5 2 0 4 1 3 一個容量為七的數組排升序(降序同理,最大值變最小就ok)
①從這組數中找那個冒泡的(最大的),把它踢到最后 2 0 4 1 3 5
②重復上述行為 2 0 1 3 4 5
③重復~~ 2 0 1 3 4 5
④~~0 1 2 3 4 5
⑤~~0 1 2 3 4 5 完成
Java代碼實例:
二、選擇排序
還是剛才那個栗子:5 2 0 4 1 3 升序
①找到數組中最小的 放到第一個位置 0 5 2 4 1 3
②數組中剩下的找到最小的放在第二個位置 0 1 5 2 4 3
③ ~~ 0 1 2 5 4 3
④~~ 0 1 2 3 5 4
⑤~~0 1 2 3 4 5 完成
Java代碼實例:
三、插入排序
個人認為就是在摸撲克牌 桌上的牌堆就是你的數組 一張一張的摸到手上,你的數組排序也就完成了。 這次你的牌堆為 5 2 0 4 1 3 ,依次向手中加牌
①摸一張5 5
②摸一張2 放5左邊 2 5
③~~ 0 2 5
④~~ 0 2 4 5
⑤~~ 0 1 2 4 5
⑥~~ 0 1 2 3 4 5
Java代碼實例:
四、希爾排序
希爾排序其實就是一種間隔交換,這次用個長點的栗子來讓大家了解我的意圖 一個擁有十個元素的數組
43 95 38 30 41 72 60 74 24 32
①首先 我以5為間隔。第一個和第六個比較,第二個和第七個比較,第三個和第八個比較......升序不變,降序則置換位置。(比如第一個43和第六個72升序不變換位置,第二個95和第七個60降序置換位置)
得到置換結果 43 60 38 24 32 72 95 74 30 41
②接著我們采用3為間隔,也就是說類似第一個和第五個比較,方法同上。
得到置換結果 24 32 30 41 60 38 43 74 72 95
③接著我們采用2為間隔,得到置換結果 :
24 32 30 38 43 41 60 74 72 95
④最后以1為間隔 結果很簡單 24 30 32 38 41 43 60 72 74 95
大家不難發現我取間隔的方式如同下方代碼一般,重復 int k/2,間隔選取其實并非唯一確定的,針對不同的數組,你們可以根據自己的經驗來采用不同方式的間隔,在這里就不啰嗦了。
Java代碼如下
現在方案寫完了 隨機一個擁有十個元素的數組然后打印出排序如下 :
希爾排序雖然針對大多數數組排序有較高的效率但是其穩定性卻令人堪憂,建議大家寫文件時用插入排序,既有效率又算法穩定。
以上就是為大家介紹的4種Java數組排序方法,在我們處理數組中的數據時能夠為我們快速地對數組數據進行排序。當然,在Java中還有其他的排序算法,感興趣的小伙伴可以觀看本站的Java基礎教程,學習其他的Java數組排序算法。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習