簡體   English   中英

隨機化隨機數組快速排序

[英]Randomize Random Array Quicksort

我在計算機科學專業的第一年,我了解到可以通過在開始排序之前對數組進行隨機化來避免QuickSort的最壞情況。

但這在輸入已經是隨機的時也適用嗎? 我認為,將隨機排列的順序排列的可能性比將其改組得更多嗎?

隨機避免O(某物)純粹是學術上的細微差別。 Math.random()非常耗時,因此效果將是負面的。

真正重要的是

  • 執行的操作總數
  • 避免隨機訪問內存以避免緩存未命中(有關緩存命中率的問題)。

用這個術語來說,好的排序算法是

  • Yarroslavkij的double-pivot quicksort,這是java sort中的默認值。 通過選擇兩個樞軸並將數組分為3個部分,該示例以一種更好的確定性方式解決了最壞的情況。
  • 在我看來,基數排序,存儲桶排序或派生,是最快的算法,但是使用2n內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM