求無序陣列中最小的k個數
阿新 • • 發佈:2019-02-08
題目描述
對於一個無序陣列,陣列中元素為互不相同的整數,請返回其中最小的k個數,順序與原陣列中元素順序一致。
給定一個整數陣列A及它的大小n,同時給定k,請返回其中最小的k個數。
測試樣例:
[1,2,4,3],4,2
返回:[1,2]
思想:首先建立兩個陣列,一個命名為C用來儲存最小的k個值,一個命名為B用來複制A陣列的值,然後對B進行排序,找到第K個值賦值給temp,將A陣列中的元素與一一與temp進行比較,小於等於temp的就儲存到C陣列,否則不做任何操作,直到找到所有的值為止
import java.util.*;
public class KthNumbers {
public int[] findKthNumbers(int[] A, int n, int k) {
// write code here
int temp =0;
//用來儲存最小的k個數
int[] C = new int[k];
//建立一個新的陣列用來複制A陣列的值
int[] B = new int[n];
for(int i = 0;i<n;i++){
B[i] = A[i];
}
//對陣列進行排序
Arrays.sort(B);
//找到第k大的那個值
temp = B[k-1];
//通過比較找到最小的k個值
for (int j = 0,s=0; j < n; j++) {
if(A[j]<=temp){
C[s]=A[j];
s++;
}
}
return C;
}
}