로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 컴퓨터 과학 (CS50 2019)

임시 이미지 David J. Malan (데이비드 J. 말란)
http://www.boostcourse.org/cs112/forum/48691
좋아요 15519 수강생 34444

예를들어 1 3 4 2 라는 배열을 병합 정렬로 정렬한다면


13 / 42

1 / 3  //  4 / 2 

까지 배열의 크기를 나눈 후,


1/3  // 2/4

1/2/3/4

1234

의 과정에 걸쳐서 병합을 통해 다시 배열한다고 하셨는데, 결국 이 배열을 병합하는 순간에도 큰 수와 작은 수를 비교해서 위치를 옮겨주는 알고리즘은 필요하지 않나요?

결국 2와 4의 위치를 바꿀 때, 그리고 병합해서 크기 4의 배열로 만드는 순간에도 3과 2의 위치를 바꾸어주는 알고리즘이 필요할텐데, 병합정렬은 이 문제를 어떤 방식으로 해결하나요?

또한 이 과정에서 결국 버블정렬이나 선택정렬과 같은 방법이 사용되는 거라면, 결국 크기 4인 배열에 해당 정렬방식을  적용하는 것과는 (시간이 훨씬 덜 걸린다는건 강의 내의 시각자료로 이해했습니다) 어떤 차이가 발생하기에 더 효율적으로 정렬되는건가요?