Update medianThree() in quick_sort.

This commit is contained in:
Yudong Jin
2023-01-15 23:32:58 +08:00
parent 3e19205c84
commit 5f0ae848c4
8 changed files with 25 additions and 16 deletions

View File

@@ -47,9 +47,11 @@ func (q *quickSort) quickSort(nums []int, left, right int) {
/* 选取三个元素的中位数 */
func (q *quickSortMedian) medianThree(nums []int, left, mid, right int) int {
if (nums[left] > nums[mid]) != (nums[left] > nums[right]) {
// 使用了异或操作来简化代码(!= 在这里起到异或的作用)
// 异或规则为 0 ^ 0 = 1 ^ 1 = 0, 0 ^ 1 = 1 ^ 0 = 1
if (nums[left] < nums[mid]) != (nums[left] < nums[right]) {
return left
} else if (nums[mid] < nums[left]) != (nums[mid] > nums[right]) {
} else if (nums[mid] < nums[left]) != (nums[mid] < nums[right]) {
return mid
}
return right