輸入n個整數,找出其中最小的K個數。

2021-09-19 14:51:23 字數 958 閱讀 9305

題目:輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。

思路:可以使用排序   這裡我採用快排,獲取到乙個有順序的陣列,然後獲取它的前n個

先使用快排排序

public static void quicksort(int arr, int start, int end) 

//如果標準數大於 右邊的數字

//用低位數字替換右邊數字

arr[low] = arr[high];

//如果左邊的數字比標準數小

while (low < high && arr[low] <= stard)

//如果左邊的數字比標準數大

//用左邊數字替換右邊數字

arr[high] = arr[low];

}//把標準數賦給高或者低所在的元素

arr[low] = stard;

//處理所有比標準數小的數字

quicksort(arr, start, low);

//處理所有比標準數大的數字

quicksort(arr, low + 1, end);

}}

獲得乙個有序陣列之後,獲取前n個

public static void main(string args) ;

system.out.println(arr.length);

quicksort(arr, 0, arr.length - 1);

system.out.println(arrays.tostring(arr));

//獲取最小的前5(n)個數字

arr = arrays.copyofrange(arr, 0, 5);

system.out.println(arrays.tostring(arr));

}

輸入n個整數,找出其中最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,牛客網題目鏈結 使用最大堆實現,1.構建大小為k的最大堆 2.如果新元素小於當前最大堆的堆頂元素,則替換堆頂,調整最大堆 3.題目要求按照從小到大順序輸出最小的k個數,所以最後需要...

輸入n個整數,輸出其中最小的k個

輸入n個整數,輸出其中最小的k個。詳細描述 介面說明 原型 bool getmink unsignedint uiinputnum,int pinputarray,unsignedint uik,int poutputarray 輸入引數 unsignedint uiinputnum 輸入整數個數 ...

劍指offer 輸入n個整數,找出其中最小的K個數

最小的k個數 題目描述 輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,本題無非就是排序,取前k個值。但選什麼排序演算法呢?基於堆排序演算法,構建最大堆。時間複雜度為o nlogk 如果用快速排序,時間複雜度為o nlogn 如...