更新時間:2020-11-02 17:53:52 來源:動力節(jié)點 瀏覽1801次
數(shù)組,其實就是一個給定了大小給定了類型的容器,在這容器中有你設(shè)定的元素,你可以對這些元素進(jìn)行各種升降排列,或者找出其中特殊的元素并進(jìn)行一系列的運算。數(shù)組,本身是有序的元素序列,本文我們就來看看Java數(shù)組排序的幾個方法。
一、冒泡排序
舉 個 栗 子:5 2 0 4 1 3 一個容量為七的數(shù)組排升序(降序同理,最大值變最小就ok)
①從這組數(shù)中找那個冒泡的(最大的),把它踢到最后 2 0 4 1 3 5
②重復(fù)上述行為 2 0 1 3 4 5
③重復(fù)~~ 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 升序
①找到數(shù)組中最小的 放到第一個位置 0 5 2 4 1 3
②數(shù)組中剩下的找到最小的放在第二個位置 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代碼實例:

三、插入排序
個人認(rèn)為就是在摸撲克牌 桌上的牌堆就是你的數(shù)組 一張一張的摸到手上,你的數(shù)組排序也就完成了。 這次你的牌堆為 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代碼實例:

四、希爾排序
希爾排序其實就是一種間隔交換,這次用個長點的栗子來讓大家了解我的意圖 一個擁有十個元素的數(shù)組
43 95 38 30 41 72 60 74 24 32
①首先 我以5為間隔。第一個和第六個比較,第二個和第七個比較,第三個和第八個比較......升序不變,降序則置換位置。(比如第一個43和第六個72升序不變換位置,第二個95和第七個60降序置換位置)
得到置換結(jié)果 43 60 38 24 32 72 95 74 30 41
②接著我們采用3為間隔,也就是說類似第一個和第五個比較,方法同上。

得到置換結(jié)果 24 32 30 41 60 38 43 74 72 95
③接著我們采用2為間隔,得到置換結(jié)果 :
24 32 30 38 43 41 60 74 72 95
④最后以1為間隔 結(jié)果很簡單 24 30 32 38 41 43 60 72 74 95
大家不難發(fā)現(xiàn)我取間隔的方式如同下方代碼一般,重復(fù) int k/2,間隔選取其實并非唯一確定的,針對不同的數(shù)組,你們可以根據(jù)自己的經(jīng)驗來采用不同方式的間隔,在這里就不啰嗦了。
Java代碼如下

現(xiàn)在方案寫完了 隨機一個擁有十個元素的數(shù)組然后打印出排序如下 :

希爾排序雖然針對大多數(shù)數(shù)組排序有較高的效率但是其穩(wěn)定性卻令人堪憂,建議大家寫文件時用插入排序,既有效率又算法穩(wěn)定。
以上就是為大家介紹的4種Java數(shù)組排序方法,在我們處理數(shù)組中的數(shù)據(jù)時能夠為我們快速地對數(shù)組數(shù)據(jù)進(jìn)行排序。當(dāng)然,在Java中還有其他的排序算法,感興趣的小伙伴可以觀看本站的Java基礎(chǔ)教程,學(xué)習(xí)其他的Java數(shù)組排序算法。