2018-05-27

作者: 木马音响积木 | 来源:发表于2018-05-27 22:51 被阅读0次

有错误,,算法导论,无哨兵 情况

```

import sys

class mergesort():

    def merge_sort(self, A, p, r):

        if p < r:

            q = (p + r) / 2

            self.merge_sort(A, p, q)

            self.merge_sort(A, q+1, r)

            self.merge(A, p, q, r)

            return A

    def merge(self, A, p, q, r):

        n1 = q - p + 1

        n2 = r - q

        L = [0 for i in range(n1+1)]

        R = [0 for i in range(n2+1)]

        for i in range(n1):

            L[i] = A[p+i]

        for j in range(n2):

            R[j] = A[q+j+1]

        L[n1] = sys.maxint

        R[n2] = sys.maxint

        i = 0; j = 0

        for k in range(p, r):

            if (i!=n1 and j!=n2):

                if L[i] <= R[j]:

                    A[k] = L[i]

                    i += 1

                else:

                    A[k] = R[j]

                    j += 1               

            else:

                onlyonetime1=1

                onlyonetime2=1

                if ( i==n1 and onlyonetime1) :

                    #A[k] = R[j]

                    #j += 1 

                    kaka=0

                    for nn in range(j,n2):

                        A[k+kaka]=R[nn]

                        kaka+=1

                    onlyonetime1=0 

                if (j==n2 and onlyonetime2):

                    #j==n2

                    #A[k] = R[j]

                    #j += 1 

                    baba=0

                    for mm in range(i,n1):

                        A[k+baba]=L[mm]

                        baba+=1

                    onlyonetime2=0

sort = mergesort()

A = [1,3,5,7,9,11,20,40,60,80,100,120]

print sort.merge_sort(A, 0, len(A)-1)

```

123123

```

$python main.py

Traceback (most recent call last):  File "main.py", line 67, in     print sort.merge_sort(A, 0, len(A)-1)  File "main.py", line 9, in merge_sort    self.merge_sort(A, q+1, r)  File "main.py", line 10, in merge_sort    self.merge(A, p, q, r)  File "main.py", line 50, in merge    A[k+kaka]=R[nn]IndexError: list assignment index out of range

```

原因未找到,先记录下来

相关文章

网友评论

    本文标题:2018-05-27

    本文链接:https://www.haomeiwen.com/subject/mrgijftx.html