題目:輸入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 如...