8 4找到無序陣列中最小的k個數

2021-09-16 14:03:32 字數 953 閱讀 4252

題目

給定乙個無序的整型陣列arr,找到其中最小的k個數。時間複雜度至少為o(nlogk)。

**實現
public

int[

]getminknumsbyheap

(int

arr,

int k)

int[

] kheap =

newint

[k];

//代表目前被選出的k個最小的數

for(

int i =

0; i != k; i++

)for

(int i = k; i != arr.length; i++)}

return kheap;

}//建堆

public

void

heapinsert

(int

arr,

int value,

int index)

else}}

//調整堆

public

void

heapify

(int

arr,

int index,

int heapsize)

if(right < heapsize && arr[right]

> arr[largest])if

(largest != index)

else

index = largest;

left = index *2+

1;right = right *2+

2;}}

public

void

swap

(int

arr,

int index1,

int index2)

找到無序陣列中最小的k個數

找到無序陣列中最小的k個數 給定乙個整型陣列arr,找到其中最小的k個數。輸入描述 輸入包含兩行,第一行包含兩個整數n和k 1 k n 105 1 leq k leq n leq 10 5 1 k n 105 代表陣列arr的長度,第二行包含n個整數,代表陣列arr 1 a rri 109 arr ...

無序陣列中最小的k個數

對於乙個無序陣列,陣列中元素為互不相同的整數,請返回其中最小的k個數,順序與原陣列中元素順序一致。給定乙個整數陣列a及它的大小n,同時給定k,請返回其中最小的k個數。測試樣例 1,2,4,3 4,2返回 1,2 簡單題 coding utf 8 class kthnumbers def findkt...

陣列與矩陣 找到無序陣列中最小的k個數

題目 給定乙個無序的整型陣列arr,找到其中最小的k個數。要求 如果陣列arr的長度為n,排序之後自然可以得到最小的k個數,此時時間複雜度與排序演算法的時間複雜度相同,為o nlogn 本題要求讀者實現時間複雜度為o nlogk 和o n 的方法。基本思路 o nlogk 的方法。思路很簡單,就是一...