日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

运动基元_Java更快地对基元数组进行排序?

發布時間:2023/12/3 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运动基元_Java更快地对基元数组进行排序? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運動基元

看來,在不久的將來,Java中的原語排序數組可能會提高性能。 弗拉基米爾·雅羅斯拉夫斯基(Vladimir Yaroslavskiy)已在core-libs-dev郵件列表中發布了一條消息 ,標題為“ Dual-Pivot Quicksort的新優化版本 ”,其中Yaroslavskiy撰寫了“ Dual-Pivot Quicksort的優化和更快版本”,他已經“開始工作了”。在……過去5年中。”

“ 新的Dual-Pivot Quicksort優化版本 ”消息包括有關Dual-Pivot Quicksort的一些歷史背景; 突出顯示了新版本在隨機數據,“近乎結構化的數組”和“周期輸入”方面的相對性能; 提供所涉及更改的全面摘要; 并提供用于更改的開放代碼審查的鏈接 。

Dual-Pivot Quicksort算法是2009年引入Java的。Yaroslavskiy在2009年9月撰寫的另一篇core-libs-dev郵件列表中 寫道: “ 用新的Dual-Pivot Quicksort替換java.util.Arrays中的Quicksort ”。 “我想與您分享新的Dual-Pivot Quicksort,它比已知的實現(理論上和實驗上)都快。 我想建議用新的替代JDK的Quicksort實現。” 在描述“新的Dual-Pivot Quicksort如何使用* two *樞軸元素”而不是所有早期方案使用的單個樞軸元素之前,該帖子描述了“經典Quicksort算法”方案以及對該方案的一些修改。

原始消息“ 用新的Dual-Pivot Quicksort替換java.util.Arrays中的Quicksort ”具有一些其他有趣的歷史細節,并在此處突出顯示。

  • 喬恩·本特利(Jon Bentley)在一封郵件中粘貼了一封電子郵件,指出:“我認為弗拉基米爾(Vladimir)對Quicksort的貢獻遠遠超過了我以前做過的任何事情,并在Hoare的原始設計和Sedgewick的分析上位居前列。” 該消息還提供了有關快速排序的發展的簡短但有趣的歷史背景。 該信息充分說明了雅羅斯拉夫斯基的貢獻,但我認為它也充分說明了喬恩·本特利的性格。
  • 喬什·布洛赫(Josh Bloch)在此消息中粘貼了一封電子郵件,其中說:“我相信此代碼最終可能會移植到多種語言并以Bentley和McIlroy的出色方式(大約成功20種成功)廣泛部署年)。” 事實證明是這種情況,因為其他語言(或語言庫)在某種程度上采用了該算法,包括JavaScript , Python和Ruby 。

通過在原始數組類型上使用Arrays.sort()方法的重載版本,可以看到新的改進版本的Dual-Pivot Quicksort可能帶來的性能改進。 搜索項“ Dual-Pivot Quicksort”在Javadoc生成的與Arrays類的JDK 9版本相關的HTML輸出中出現14次:

  • Arrays.sort(int [])
  • Arrays.sort(int [],int,int)
  • Arrays.sort(long [])
  • Arrays.sort(long [],int,int)
  • Arrays.sort(short [])
  • Arrays.sort(short [],int,int)
  • Arrays.sort(char [])
  • Arrays.sort(char [],int,int)
  • Arrays.sort(byte [])
  • Arrays.sort(byte [],int,int)
  • Arrays.sort(float [])
  • Arrays.sort(float [],int,int)
  • Arrays.sort(double [])
  • Arrays.sort(double [],int,int)

因為快速排序僅用于對基元進行排序,所以對雙數據點快速排序的這些性能增強功能僅影響基元上的方法,而不會影響傾向于使用合并排序的Arrays.sort(Object [])之類的方法。

據我所知,這些性能改進沒有針對Java的特定版本,但是它們似乎已經進行了廣泛的審查和測試,因此與基元數組排序有關的性能改進可能很快就會到來。您附近的Java版本。

參考資料

  • Dual-Pivot Quicksort算法 (2009年9月)
  • 用新的Dual-Pivot Quicksort替換java.util.Arrays中的Quicksort (2009年9月)
  • Dual-Pivot Quicksort的新優化版本 (2018年1月)
    • 關聯代碼更改
  • 證明JDK的Dual Pivot Quicksort正確 (2017年8月)
  • 為什么雙軸Quicksort快速? (2015年11月)
  • 工程速查 (2013年1月)
  • 快速分揀–三向和雙樞軸 (2013年6月)
  • StackOverflow.com上的相關線程:
    • Yaroslavskiy的雙重樞紐快速排序算法

翻譯自: https://www.javacodegeeks.com/2018/01/faster-sorting-arrays-primitives-coming-java.html

運動基元

總結

以上是生活随笔為你收集整理的运动基元_Java更快地对基元数组进行排序?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。