阿里巴巴筆試題目(接示本質的解法)


2012-12-03

 

阿里巴巴有如下的筆試題目:

有一個神奇的數組,其中的第i個元素在排序之后的位置位於[i-k, i+k]之間(k序的).試寫算法把一個k序數組排序,要求最快.

 

解法,

顯然有以下幾個子序列:

X[0], X[k+1], X[2(k+1)],  X[3(k+1)]......

 

 

X[1],X[k+1+1],X[2(k+1)+1],X[3(k+1)+1]......

 

 

........................

X[k],X[k+1+k],X[2(k+1)+k],X[3(k+1)+k]......

 

k+1個子序列是已經排序好的,剩下的任務是把其歸並

 

有兩種方法:

方法一,

普通的merge,與把兩個數組歸並一樣的思想,則復雜度為O(nk)

方法二

用敗者樹,則合並一個元素要LogK的時間,合並n個元素要O(nlogk)的時間

 

解完.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM