1. 程式人生 > >最小的K個數(劍指offer)

最小的K個數(劍指offer)

快排 最大堆 元素 空間復雜度 隨筆 源碼 圖片 image alt

題目描述

輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 方法一:運用Array.sort()方法。 sort方法改進後比基礎的8個排序算法稍微快點,看了源碼,知道其實是快排的改進版,所以時間復雜度是o(nlogn),我真是個小機靈。 當然一般求第k個數的時候考察的主要是維護最大堆的問題。 時間復雜度:o(nlogn) 空間復雜度:o(k) 技術分享圖片

方法二:維護大頂堆的元素為k個

看下一篇隨筆的總結。

時間復雜度:o(nlogn) 空間復雜度:o(k)

技術分享圖片

最小的K個數(劍指offer)