1. 程式人生 > >求無序陣列中最小的k個數

求無序陣列中最小的k個數

題目描述

對於一個無序陣列,陣列中元素為互不相同的整數,請返回其中最小的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; } }