最小的k個數

2021-07-10 03:51:17 字數 391 閱讀 4700

題目描述:查詢最小的k個數

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

例如,輸入1、2、3、4、5、6、7、8這8個數字,則最小的4個數字為1、2、3、4。

解題思路:

首先:我們會想到先排序,這個想法最為直接,排完序之後自然可以找到最小的k個數,這是第一層思考;那麼我們來分析一下常用的排序演算法:

氣泡排序

選擇排序(簡單選擇排序,堆排序)

插入排序(直接插入排序,希爾排序)

快速排序

歸併排序

在這些演算法中,氣泡排序和選擇排序每迴圈一次就找到了乙個最小值,可以不用全部排序;快速排序可以每迴圈一次即選擇乙個中軸值,一部分比它小,一部分比它大;這些特性都是有利於在查詢最小的k個值中能夠用到的。具體分析如下:

最小的K個數

問題描述 給定的n個整數,計算其中最小的k個數。最直觀的解法莫過於將n個數按公升序排列後輸出前k個。但是就效率來看,這種方法並不是最理想的。一種改進方法是借助快速排序中對陣列的劃分,以第k個元素對陣列進行劃分,使得比第k個數字小的數字都在其左邊,比其大的數字都在它的右邊。void swap int ...

最小的K個數

從 陣列中出現次數超過一半的數字 得到啟發,同樣可以基於partition函式來解決。一 o n 演算法 void getleastnumbers int input,int n,int output,int k else for int i 0 i k i output i input i 二 o...

最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,如果不讓使用sort的話,自己實現乙個,或者依次選取最小的 class solution public vectorgetleastnumbers solution vectori...