面試100題--05查找TPO k
面試題100---05 查找TOPK
從數組中找出最小的K個數
最笨的方法:對原數組進行排序,這樣的話其復雜度為o(nlogn)
下面介紹一個o(n+logk n)的方法 ,最后再介紹一個方法,實現對k數組不需要排序,但是需要一個輔助堆棧
新建一個輔助堆棧k,插入數組時,若k數組中的數組,不足k。則直接插入元素。
若k數組中的數目。已經為k,則需要找出數組中的最大值。并與要插入的值x進行比較,若值x大于最大值,則忽略。否則將最大值替換為x。
上述說明的方法,其復雜度為o(n + logK * n)。
使用一個堆,來存放k數組,以盡可能快地進行max運算。



































































posted on 2011-05-16 11:22 kahn 閱讀(292) 評論(0) 編輯 收藏 引用 所屬分類: 算法相關