• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

안녕하세요!

21.07.07 10:35 작성 조회수 147

1

선생님 이런 에러는 왜 생기는걸까요 ? ㅜㅜ

답변 2

·

답변을 작성해보세요.

0

안녕하세요^^

tmp.append(arr[p1:mid+1])

이렇게 하면 tmp라는 리스트에 새로은 리스트를 넣어 2차원 리스트가 됩니다.

tmp=tmp+arr[p1:mid+1] 이렇게 해야 일차원리스트 + 일차원리스트=일차원리스트가 됩니다.

0

용용용님의 프로필

용용용

질문자

2021.07.07

def Dsort(lt, rt):

    if lt < rt:

        mid = (lt+rt)//2

        Dsort(lt, mid)

        Dsort(mid+1, rt)

        p1 = lt

        p2 = mid+1

        tmp = []

        while p1 <= mid and p2 <= rt:

            if arr[p1] < arr[p2]:

                tmp.append(arr[p1])

                p1+=1

            else:

                tmp.append(arr[p2])

                p2+=1

        if p1 <= mid: tmp.append(arr[p1:mid+1])

        if p2 <= rt: tmp.append(arr[p2:rt+1])

        for i in range(len(tmp)):

            arr[lt+i] = tmp[i]

if __name__ == "__main__":

    arr = [23, 11, 45, 36, 15, 67, 33, 21]

    Dsort(0,7)

    print(arr)