mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 12:58:42 +08:00
Fix the median_three mehod for quick sort (#1134)
* Add the section of terminologies. * fix format * Fix median_three function for quick sort * Delete docs/chapter_appendix/terminologies.md * Update quick_sort.ts * Update quick_sort.rs * Update quick_sort.js
This commit is contained in:
@ -40,12 +40,11 @@ class QuickSortMedian:
|
||||
|
||||
def median_three(self, nums: list[int], left: int, mid: int, right: int) -> int:
|
||||
"""选取三个候选元素的中位数"""
|
||||
# 此处使用异或运算来简化代码
|
||||
# 异或规则为 0 ^ 0 = 1 ^ 1 = 0, 0 ^ 1 = 1 ^ 0 = 1
|
||||
if (nums[left] < nums[mid]) ^ (nums[left] < nums[right]):
|
||||
return left
|
||||
elif (nums[mid] < nums[left]) ^ (nums[mid] < nums[right]):
|
||||
return mid
|
||||
l, m, r = nums[left], nums[mid], nums[right]
|
||||
if (l <= m <= r) or (r <= m <= l):
|
||||
return mid # m 在 l 和 r 之间
|
||||
if (m <= l <= r) or (r <= l <= m):
|
||||
return left # l 在 m 和 r 之间
|
||||
return right
|
||||
|
||||
def partition(self, nums: list[int], left: int, right: int) -> int:
|
||||
|
||||
Reference in New Issue
Block a user