最小的K個數(Python)

2021-09-11 06:31:46 字數 649 閱讀 1921

題目描述

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

這個題目完成的思路有很多,很多排序演算法都可以完成既定操作,關鍵是複雜度性的考慮。以下幾種思路當是筆者拋磚引玉,如果讀者有興趣可以自己再使用其他方法一一嘗試。

思路1:利用冒泡法,臨近的數字兩兩進行比較,按照從小到大的順序進行交換,如果前面的值比後面的大,則交換順序。這樣一趟過去後,最小的數字被交換到了第一位;然後是次小的交換到了第二位,。。。,依次直到第k個數,停止交換。返回lists的前k個數(lists[0:k],前閉後開)

思路2:使用快排中的partition思想。

①我們設定partition函式的哨兵為key=lists[left],在partition函式中完成一輪比較的結果是,比key大的數都在其右邊,比key小的數放在其左邊。完成該輪後返回其left=right時left的值。

②我們判斷left的值是比k大還是小:

如果left的值比k大,說明上輪partition之後,lists中前left個小的數在左邊,其餘的數在其右邊,我們還需要把尋找範圍縮小,下次找的時候只在陣列前面left個數中找了。

如果left的值比k小,說明上輪partition之後,前left個數找的太少了,我們需要再往陣列的後面找。

Python 最小的 k 個數

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

python 最小的k個數

class solution def getleastnumbers solution self,t,k write code here if len t 0 or len t k or k 0 不設定k 0 返回,k為0時會陷入無限迴圈 return s 0 l len t 1 index sel...

Python 最小的K個數

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4 最大堆的查詢時間複雜度為o logk 替換的複雜度也為o logk 輔助陣列的空間複雜度為o k 如果換為用陣列解決該問題,那麼 查詢的時間複雜度為o logk 採用折半查詢 替換...