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個...