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