從10萬個數中找10個最大的數

對於這種題目,最普通的想法是先對這10萬個數進行排序,而後再選取數組中前10個數,即爲最後的答案,排序算法的時間複雜度不下於O(N lgN)。最好的方法是創建一個最小堆。 算法描述: 咱們首先取10萬個元素中的前10個元素來創建由10個元素組成的最小堆。這樣堆頂元素即是當前已知元素的第10大的數;而後依次讀取剩下的99990個元素,若讀取的元素比堆頂元素大,則將堆頂元素和當前元素替換,並自堆頂至下
相關文章
相關標籤/搜索