【排序算法】相關積累彙總ing

n個無序整數,已知第i個數在排好序的序列中的位置爲j,知足|i-j|<=K,請設計一種排序算法,對該序列進行排序。算法

注:算法時間複雜度爲O(nlgn)的得0分,複雜度爲O(nk)的得兩分,總分是20分。spa

    答:由以上條件判斷最小的數字必定在前k箇中,因而能夠講前k個數創建一個最小堆,而後把根元素取出,該根元素就是最小數,而後將第k+1個數放入堆中,由於第二小的數字確定在下標爲1到k+1的位置範圍內,因此調整最小堆以後,根元素就是第二小元素,取出該元素,將第k+2個元素放入堆中,……以此類推,按照元素從堆中取出的順序就是已經排好序的序列。該算法時間複雜度爲O(nlgk),確切的說是(n-k)lgk。設計

相關文章
相關標籤/搜索