inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬으로 배우는 알고리즘 기초

이분 검색과 합병 정렬

def mergesort(S) 부분이 이해가 가지 않습니다.

281

realbale

작성한 질문수 6

0

def mergesort(S)에서 리스트를 U와 V로 2분할 할 때, 즉, mergesort 재귀호출이 아닌 그냥

U = S[0:mid]

V = S[mid:n] 

이렇게 할 경우 왜 값이 다르게 나타나는지 모르겠습니다.

algorithm

답변 3

1

주니온

merge() 함수는 이미 정렬되어 있는 것을 합치도록 코드가 구성되어 있죠?

재귀 호출을 하지 않으면 정렬되지 않은 값이 merge 함수의 파라미터로 넘어가니까 정상동작을 할 수 없는 것입니다.

0

주니온

재귀 함수 호출에 익숙하지 않군요.

먼저, 팩토리얼 함수를 재귀적으로 구현해서 위에서 처럼 그림을 그려보세요.

다음, 피보나치 함수의 재귀적 호출 구조를 연구해 보세요.

그리고 나서 다시 돌아와서 mergesort()를 들여다 보세요.

그렇게 해야 이해가 될 겁니다.

breakpoint를 찍을 줄 알면, breakpoint를 적극 활용해 보세요.

0

realbale

답변 감사합니다. 왜 재귀 호출을 해야하는지까지는 이해했습니다.

그런데 재귀 호출을 2번하다보니 제가 함수 실행 순서를 정확히 이해를 못 하고 있는 것 같습니다.

결론부터 말하자면 제가 생각하는 출력은

 

입니다.

이해가 가지 않아서 함수의 실행 순서를 제가 직접 그림을 그려 보았습니다(1번부터 7번까지). 어느 부분에서 잘못되었는지 지적해주시면 감사하겠습니다.

문제 생각 몇분정도가 좋을까요

0

256

1

self

2

640

1

Two sum

2

336

1

Test_queue 출력 오류

1

547

2

int 범위

2

323

1

시간복잡도

1

1373

1

심화 과정 커리큘럼 질문

1

526

1

Algorithm 3.5 : Print Shortest Path 관련 질문 (플로이드 알고리즘)

0

274

0

코드 중간에 오류 보고 합니다!

1

236

1

쉽지 않네요 ㅠ

0

335

1

분기 한정법과 배낭 문제

0

392

1

배낭문제와 동적계획법

0

511

1

최적 이진검색트리 관계식

0

412

1

플로이드 알고리즘

0

426

2

n-Queens

0

223

1

큰정수의 계산법 강의에서 몫과 나머지

0

228

1

퀵정렬

0

206

1

1.1알고리즘 이란 에서 교환정렬 파이썬으로 바꿀때

0

303

1

마지막 matrixmult 파라미터 값

0

258

2

내장함수에 언더스코프의 의미

0

648

2

이진탐색 vs 합병정렬

1

450

2

분할정복에서 큰 정수 곱셈 다른 계산법?

1

319

1

0번째 왜 자꾸 버리시는건가요?

2

341

1

리스트의 합

0

181

1