Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 搜索反转时打印_Python_Printing_Inversion - Fatal编程技术网

Python 搜索反转时打印

Python 搜索反转时打印,python,printing,inversion,Python,Printing,Inversion,我正在尝试实现一个搜索反演的算法。打印更新的全局变量c时遇到问题。我应该把打印报表放在哪里 我更喜欢使用一个包含样板(?)的方法,因为我将在以后运行一个计时函数来测试运行时间。如果我能让它打印结果(8)。如果我把它放在merge函数中(在返回C之前),它将返回最多8个值的所有值。我希望它在进程结束时只打印c c=0 def merge(A,B): global c C=[] lenA=len(A) lenB=len(B) i=0 j=0

我正在尝试实现一个搜索反演的算法。打印更新的全局变量
c
时遇到问题。我应该把打印报表放在哪里

我更喜欢使用一个包含样板(?)的方法,因为我将在以后运行一个计时函数来测试运行时间。如果我能让它打印结果(8)。如果我把它放在merge函数中(在返回C之前),它将返回最多8个值的所有值。我希望它在进程结束时只打印c

c=0
def merge(A,B):

    global c
    C=[]
    lenA=len(A)
    lenB=len(B)
    i=0
    j=0
    while i<lenA and j<lenB:
        if A[i]<=B[j]:
            C.append(A[i])
            i=i+1
        else:
            c=c+len(A)-i 
            C.append(B[j])
            j=j+1
    if i==lenA:  #A get to the end
        C.extend(B[j:])
    else:
        C.extend(A[i:])
    return C


def inversions_divide_conquer(Array):
    N=len(Array)
    if N>1:
        S1=inversions_divide_conquer(Array[0:N/2])
        S2=inversions_divide_conquer(Array[N/2:])
        return merge(S1,S2)
    else:
        return Array



if __name__ == '__main__':

    inversions_divide_conquer([4, 1, 3, 2, 9, 1])
c=0
def合并(A、B):
全球c
C=[]
lenA=len(A)
lenB=len(B)
i=0
j=0

而我如何看待一个有用的问题主题?嵌套的if语句是否会增加运行时间?我希望它仍然是O(nlogn)。我也能得到一个解释吗?很抱歉我不太明白你做了什么。实时,是的,当然,但不太了解。渐近运行时,除非检查if需要进一步计算。在本例中,它不是,因为您只是比较两个常量。顺便说一句,你要解决的问题是什么?给我的问题是写O(N^2)算法和O(nlogn)算法。然后使用Python中内置的timeit特性测试这两种算法的运行时间。我有这两种算法的代码,但我只是停留在print语句上。对,我的意思是,当你说你在计算反转数时,你是不是在试图计算数组中的对数x,y,使得x>y和x位于y之前?是的,如果Iaj,一对元素ai和aj代表反转
M = len(stuff)
def inversions_divide_conquer(Array):
    N=len(Array)
    if N>1:
        S1=inversions_divide_conquer(Array[0:N/2])
        S2=inversions_divide_conquer(Array[N/2:])
        if N == M:
            print c
        return merge(S1,S2)
    else:
        return Array

inversions_divide_conquer(stuff)