2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

java培訓:Arrays.sort()的內部排序機制

更新時間:2019-04-17 來源:黑馬程序員java培訓 瀏覽量:

  數組的操作可以使用java提供的工具類Arrays,其中Arrays.sort()方法用于數組的排序。

  基本數據類型數組的操作,使用經過優化的快速排序算法

  當數組的規模較小時,直接插入排序的比較次數并不會比快排或者歸并多多少,其效率反而不如簡單排序算法,所以在數組規模小于7時,使用直接插入排序,

  當數組規模較大時,合理的選擇快排的樞軸元素,如在規模小于40時,在數組的首,中,尾三個位置上的數,取中間大小的數做樞軸;在數組規模大于40時,從數組中取位置均勻分布的9個數,然后每三個數一組取中間數,最后三個中間數再取中間數。確定樞軸后,與數組的第一個元素交換,之后的快排與普通快排一樣。

  當數組中有大量重復元素時,選擇重復元素作為樞軸,然后兩個端各設置兩個工作指針low、high,left、right用于始終指向要交換的元素位置,如5,2,5,6,4,3,5,1,5,7

  從high開始判斷,low <= high,若high位置的元素 >= 基準元素high–,同時若high位置的元素 == 基準元素,high位置的元素與right位置的元素交換,同時right–,繼續直到high位置的元素 < 基準元素。

  從low開始判斷,low <= high,若low位置的元素 <= 基準元素low++,同時若low位置的元素 = 基準元素,low位置的元素與left位置的元素交換,同時left++,繼續直到low位置的元素 > 基準元素。

  low、high位置的元素交換,同時low++、high–,然后再從high開始繼續上面的過程,最后將重復的元素至于序列的兩端,中間的序列分成了兩部分,左面的為小于基準元素的,右面的為大于基準元素的,如5,5,2,1,4,3,7,6,5,5,此時low在7位置,high在3位置。

  將兩端重復的元素都交換到中間后,對兩端不等的元素使用快排,左側外循環從下標0開始判斷,若等于樞軸進入內循環,內循環從下標low - 1開始向前找不等于樞軸的,找到交換,直到外循環遇到不等于樞軸的退出;右側外循環從下標n - 1開始判斷,若等于樞軸進入內循環,內循環從下標high + 1開始向后找不等于樞軸的,找到交換,直到外循環遇到不等于樞軸的退出。

  引用數據類型數組的排序,使用經過優化的歸并排序算法。

  當數組規模j較小時,使用直接插入排序。

  當屬組規模較大時,使用歸并排序,且當合并的兩個有序序列中,低子序列的最高元素小于高子序列的最低元素時,無序執行合并算法,這個可以在merge算法里判斷。

java培訓

  黑馬程序員java培訓課程擁有6大課程優勢:

  ①獨有的一站式IT職業教育體系,讓學員通過6個月的線下學習實現高起點就業, 12個月的線上在職進階課實現升職加薪,大幅提升學員的職場晉升速度。

  ②60+套技術解決方案,覆蓋職場常見開發問題,讓學員就業后快速上手開發難題,輕松成為核心員工。

  ③超大項目庫,覆蓋7大就業主流熱門行業,讓學員邊學習邊積累項目開發經驗。

  ④超千人投入的3大課程研發庫,每年耗資千萬打造領先行業的優質課程。

  ⑤傳智&華為課程共建,持續為課程輸出前沿技術。

  ⑥120+超強師資團隊,多為總監、架構師出身,除了專業技能,還為你規劃適合你的職業發展路線。

分享到:
在線咨詢 我要報名
和我們在線交談!