파이썬 비재귀 병합정렬

조회수 118회
def seq_merge_sort(arr):
    rght = 0; wid = 0; rend = 0; left = 0
    k = 1

    num = len(arr)
    temp = [0] * num

    while(k < num):
        while(left + k < num):
            rght = left + k
            rend = rght + k
            if(rend > num):
                rend = num
            m = left; i = left; j = rght

            while(i < rght and j < rend):
                if (arr[i] <= arr[j]):
                    temp[m] = arr[i]
                    i += 1
                else:
                    temp[m] = arr[j]
                    j += 1
                m += 1

            while(i < rght):
                temp[m] = arr[i]
                i += 1; m += 1
            while(j < rend):
                temp[m] = arr[j]
                j += 1; m += 1
            m = left
            while(m < rend):
                arr[m] = temp[m]
                m += 1
            left += k * 2
        k *= 2
    return arr

파이썬을 이용해 만든 비재귀 병합정렬입니다.

그런데 이게 케이스 바이 케이스로 되었다 안되었다 합니다.

정렬이 완전히 될 때가 있고 되다 말 때가 있습니다.

고쳐주실 수 있는 고수님들께 도움 간절히 요청합니다..

  • 되다 마는 케이스를 다음과 같이 구체적으로 올려주시면 도움이 됩니다. (1) 내가 넣은 것 (2) 내가 기대한 것 (3) 내가 얻은 것 엽토군 2019.11.15 11:20

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.