0
我必須在Python中編寫一個shell排序程序,但一方面我必須有一個程序使用一些特殊的間隙序列創建文本文件,這是我的shell排序會得到它的差距數字。如何實現Pratt間隙序列? (Python,Shell Sort)
On Wikipedia(http://en.wikipedia.org/wiki/Shellsort)Pratt序列的等式如下:「連續數字形式2^p * 3^q」,它產生1,2,3,4,6,8,9,12 ,...
我沒有得到的是如何實現這個,基本上P和Q是什麼?
最壞情況下的時間複雜度爲O(n日誌^ 2N)
我對序列發生器文件目前代碼:
def Hibbard(big):
H = open("Hibbard.txt","w")
i = 1
math = (2**i)-1
while math <= big:
H.write(str(math))
H.write("\n")
i+=1
math = (2**i)-1
def Pratt(big):
pass
def SedA(big):
SA = open("SedgewickA.txt","w")
SA.write("1\n")
i = 1
math = (4**i)+3*2**(i-1)+1
while math <= big:
SA.write(str(math))
SA.write("\n")
i+=1
math = (4**i)+3*2**(i-1)+1
def SedB(big):
pass
def main():
big = int(input("Enter the largest gap: "))
Hibbard(big)
普拉特(大)
SedA(big)
SEDB(大)
main()
我還沒有嘗試過編碼,因爲我根本不知道從哪裏開始。這真的是一個數學問題。 如果有幫助,我已經編碼了4個我需要的其他4個,我會把它放在這裏。 – 2014-09-21 22:53:03