更新時(shí)間:2020-11-02 17:53:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1636次
數(shù)組,其實(shí)就是一個(gè)給定了大小給定了類型的容器,在這容器中有你設(shè)定的元素,你可以對(duì)這些元素進(jìn)行各種升降排列,或者找出其中特殊的元素并進(jìn)行一系列的運(yùn)算。數(shù)組,本身是有序的元素序列,本文我們就來(lái)看看Java數(shù)組排序的幾個(gè)方法。
一、冒泡排序
舉 個(gè) 栗 子:5 2 0 4 1 3 一個(gè)容量為七的數(shù)組排升序(降序同理,最大值變最小就ok)
①?gòu)倪@組數(shù)中找那個(gè)冒泡的(最大的),把它踢到最后 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代碼實(shí)例:
二、選擇排序
還是剛才那個(gè)栗子:5 2 0 4 1 3 升序
①找到數(shù)組中最小的 放到第一個(gè)位置 0 5 2 4 1 3
②數(shù)組中剩下的找到最小的放在第二個(gè)位置 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代碼實(shí)例:
三、插入排序
個(gè)人認(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í)例:
四、希爾排序
希爾排序其實(shí)就是一種間隔交換,這次用個(gè)長(zhǎng)點(diǎn)的栗子來(lái)讓大家了解我的意圖 一個(gè)擁有十個(gè)元素的數(shù)組
43 95 38 30 41 72 60 74 24 32
①首先 我以5為間隔。第一個(gè)和第六個(gè)比較,第二個(gè)和第七個(gè)比較,第三個(gè)和第八個(gè)比較......升序不變,降序則置換位置。(比如第一個(gè)43和第六個(gè)72升序不變換位置,第二個(gè)95和第七個(gè)60降序置換位置)
得到置換結(jié)果 43 60 38 24 32 72 95 74 30 41
②接著我們采用3為間隔,也就是說(shuō)類似第一個(gè)和第五個(gè)比較,方法同上。
得到置換結(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é)果很簡(jiǎn)單 24 30 32 38 41 43 60 72 74 95
大家不難發(fā)現(xiàn)我取間隔的方式如同下方代碼一般,重復(fù) int k/2,間隔選取其實(shí)并非唯一確定的,針對(duì)不同的數(shù)組,你們可以根據(jù)自己的經(jīng)驗(yàn)來(lái)采用不同方式的間隔,在這里就不啰嗦了。
Java代碼如下
現(xiàn)在方案寫完了 隨機(jī)一個(gè)擁有十個(gè)元素的數(shù)組然后打印出排序如下 :
希爾排序雖然針對(duì)大多數(shù)數(shù)組排序有較高的效率但是其穩(wěn)定性卻令人堪憂,建議大家寫文件時(shí)用插入排序,既有效率又算法穩(wěn)定。
以上就是為大家介紹的4種Java數(shù)組排序方法,在我們處理數(shù)組中的數(shù)據(jù)時(shí)能夠?yàn)槲覀兛焖俚貙?duì)數(shù)組數(shù)據(jù)進(jìn)行排序。當(dāng)然,在Java中還有其他的排序算法,感興趣的小伙伴可以觀看本站的Java基礎(chǔ)教程,學(xué)習(xí)其他的Java數(shù)組排序算法。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)