[알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

25
2016.11.19 2 주주 merge sort, quick sort, heap sort

Upload: codingclub

Post on 12-Apr-2017

103 views

Category:

Education


2 download

TRANSCRIPT

Page 1: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2016.11.19

2주차merge sort,

quick sort,

heap sort

Page 2: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. merge sort

2. quick sort

3. heap sort

목차

Page 3: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge Sort – 합병 정렬 배열을 계속 반으로 분할 하여 각각 따로 정렬한 후 , 다시 합병 하며 정렬

1. Merge Sort

♣ 절차 ① 분할

: 배열을 n/2 개 아이템을 가진 2 개의 부분 배열로 분할한다 .

② 정복: 정렬함으로써 각 부분배열을 정복한다 ( 푼다 ).

배열이 충분히 작지 않으면 재귀 호출 을 한다 .

③ 통합: 부분배열에 대한 답들을 합병하여 하나 의정렬된 배열을 만든다 .

Page 4: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge Sort 예제•문제 : n 개의 정수를 비내림차순으로 정렬하시오 .

•입력 : 양의 정수 n, 크기가 n 인 배열 S[1..n]

•출력 : 비내림차순으로 정렬된 배열 S[1..n]

•보기 : 27, 10, 12, 20, 25, 13, 15, 22

1. Merge Sort

Page 5: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge sort 예제1. Merge Sort

Page 6: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge Sort in C1. Merge Sort

Page 7: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge Sort in C1. Merge Sort

Page 8: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

1. Merge Sort in C1. Merge Sort

Page 9: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2. Quick Sort – 빠른 정렬2. Quick Sort

♣ 절차• 기준 원소 (pivot) 을 선정• 기준원소보다 작은 원소는 모두 왼쪽 배열로 ,

• 기준원소보다 크거나 같은 배열은 모두 오른쪽 배열로 가도록분할

• 각각 따로 정렬한 후 , 다시 합병 하며 정렬

( 분할교환정렬 : partition exchange sort)

Page 10: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2. Quick Sort 예제•문제 : n 개의 정수를 비내림차순으로 정렬하시오 .

•입력 : 양의 정수 n, 크기가 n 인 배열 S[1..n]

•출력 : 비내림차순으로 정렬된 배열 S[1..n]

•보기 : 15, 22, 13, 27, 12, 10, 20, 25

2. Quick Sort

Page 11: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2. Quick Sort 예제2. Quick Sort

Page 12: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2. Quick Sort in C2. Quick Sort

Page 13: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

2. Quick Sort in C2. Quick Sort

Page 14: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort – 힙 정렬• 완전 이진 트리에 있는노드 중

키 값이 가장 큰 노드 or 키 값이 가장 작은 노드를 찾기 위해 만든 자료구조

3. Heap Sort

§ 완전 이진트리

Page 15: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort – 힙 정렬3. Heap Sort

§ 최대 힙 , 최소 힙

 (  ≥ 부모 노드의 키 값 자식 노드의 키 값 )   (  ≤ 부모 노드의 키 값 자식 노드의 키 값 ) 

Page 16: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort – 힙 정렬

♣ 절차 ① 정렬한 원소 들을 입력하여 최대 힙 구성 ②힙에대하여 삭제 연산 을 수행하여 얻은 원소를 마지막 자리에

배치 ③나머지 원소에 대해서 다시 최대 힙 로 재구성

     원소의 개수만큼 2~3 을 반복 수행

§ →최대 힙 내림차순 , →최소 힙 오름차순

3. Heap Sort

Page 17: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 문제 :  정렬되지 않은 [69, 10, 30, 2, 16, 8, 31, 22] 의 자료들을

정렬

3. Heap Sort

30

Page 18: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 힙에 삭제 연산을 수행• 루트 노드의 원소 69 를 구해서 배열의 마지막 자리에 저장 .

• 나머지 원소들에 대해서 최대 힙으로 재구성 .

3. Heap Sort

Page 19: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 위 과정을 반복

3. Heap Sort

Page 20: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 위 과정을 반복

3. Heap Sort

Page 21: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 위 과정을 반복

3. Heap Sort

Page 22: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort 예제• 위 과정을 반복

3. Heap Sort

Page 23: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort in C3. Heap Sort

Page 24: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort in C3. Heap Sort

Page 25: [알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬

3. Heap Sort in C3. Heap Sort