QuickSelect 查詢第 K 小的元素

2021-09-04 02:19:00 字數 688 閱讀 1528

quick select演算法通常用來在未排序的陣列中尋找第 k 小/第 k 大的元素。其方法類似於quick sort。

本質上是通過多次快速排序,當某次快速排序的樞紐元素恰好下標為 k-1 時,結束查詢~

package main

import "fmt"

func core(nums int, k, start, end int) int

nums[left] = nums[right]

for left < right && nums[left] <= key

nums[right] = nums[left]

} nums[left] = key //left 是下標,k 也是下標

if left < k else if left > k

return nums[left]

}func findksmallestnum(nums int, k, start, end int) int

func main()

result := findksmallestnum(nums, 3, 0, 5)

fmt.println(result)

}

注意快速排序的寫法,注意 k 和 left 均為下標 

查詢第K小數

查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出描述 輸出第k小的整數。輸入例子 6 2 1 3 5 2 2 3 輸出例子 3 import j a.util.array...

BUPT 查詢第K小數

查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出第k小的整數。示例1 複製6 2 1 3 5 2 2 3複製 3題解 利用雜湊表排除重複數 include include usin...

查詢第k個小數

題目描述 查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出描述 輸出第k小的整數。示例1輸入複製6 2 1 3 5 2 23輸出 複製3題目解析 需要去重,然後檢視第k個...