我試圖理解快速排序與3中間分區。在找到數組中的第一個,中間和最後一個元素的中位數之後,通常的做法是將數組中的第二個元素(第n-1個索引)中值換位。我們這樣做是否有特定的原因?QuickSort中的媒體3分區
0
A
回答
0
原因是該算法不僅找到中位數,還排序低,中,高元素。在三種排列後,你知道[中] < = a [高]。所以你只需要在高點之前劃分元素,因爲[high]大於或等於pivot。
我們來看一個例子:low = 0,middle = 4,high = 8。您的陣列是這樣的:
lowerOrEqualToPivot XXX樞軸XXX greaterOrEqualToPivot
如果交換中間高,則需要括號之間分隔的8個元素:
[lowerOrEqualToPivot XXX greaterOrEqualToPivot XXX]樞軸
如果您將中間值與高位-1交換,則需要分割僅7個元素:
[lowerOrEqualToPivot XXXXXX] pivot greaterOrEqualToPivot
順便說一句,在第一行有一個錯誤:
int middle =(low + high)/ 2; //錯誤 int middle =(low + high)>>> 1; //正確
原因是,如果(低+高)大於Integer.MAX_VALUE,您將發生溢出,中間將爲負數。第二行總是會給你一個積極的結果。
相關問題
- 1. QuickSort分區
- 2. QuickSort分區提供例外
- 3. 爲什麼QuickSort Single比3路分區快速轉換?
- 4. 如何在Instagram-API中區分輪播媒體與圖片或視頻媒體?
- 5. 如何區分YII2中的oauth社交媒體插件
- 6. 區分媒體查詢中的縱向和橫向版本
- 7. IIS平滑流媒體和Windows媒體服務的區別
- 8. OCR和區分2或3種字體
- 9. 這兩個Quicksort分區函數有什麼區別?
- 10. 用於區分電話和桌面的媒體查詢
- 11. 怎樣的Android和iPad與媒體查詢區分?
- 12. 在QuickSort壞分配
- 13. 在CSS鏈接中沒有媒體和媒體=「全部」沒有區別嗎?
- 14. CSS 3媒體查詢 - 支持哪些分辨率
- 15. wordpress媒體庫分頁
- 16. 媒體分析Java庫
- 17. 社交媒體分享
- 18. Umbraco媒體部分失蹤?
- 19. 分享媒體任務
- 20. 區分CSS中的字體字體
- 21. 媒體查詢分組而不是多個分散的媒體查詢匹配
- 22. QuickSort中的StackOverflowException
- 23. 流星:通過社交媒體區分登錄和註冊
- 24. 使用媒體查詢使分區響應
- 25. 如何通過CSS媒體查詢區分手機和屏幕?
- 26. 平均3分區
- 27. 3分區歸併
- 28. 媒體捕捉本地插件Ionic 3
- 29. SASS +媒體查詢+引導3模式
- 30. Joomla 3媒體查詢被忽略
你在這裏有答案http://stackoverflow.com/questions/13144484/median-of-3-partitioning/14415198#14415198。 – Arnaud