[알고리즘 스터디 2주차]병합정렬/퀵정렬/힙정렬
TRANSCRIPT
2016.11.19
2주차merge sort,
quick sort,
heap sort
1. merge sort
2. quick sort
3. heap sort
목차
1. Merge Sort – 합병 정렬 배열을 계속 반으로 분할 하여 각각 따로 정렬한 후 , 다시 합병 하며 정렬
1. Merge Sort
♣ 절차 ① 분할
: 배열을 n/2 개 아이템을 가진 2 개의 부분 배열로 분할한다 .
② 정복: 정렬함으로써 각 부분배열을 정복한다 ( 푼다 ).
배열이 충분히 작지 않으면 재귀 호출 을 한다 .
③ 통합: 부분배열에 대한 답들을 합병하여 하나 의정렬된 배열을 만든다 .
1. Merge Sort 예제•문제 : n 개의 정수를 비내림차순으로 정렬하시오 .
•입력 : 양의 정수 n, 크기가 n 인 배열 S[1..n]
•출력 : 비내림차순으로 정렬된 배열 S[1..n]
•보기 : 27, 10, 12, 20, 25, 13, 15, 22
1. Merge Sort
1. Merge sort 예제1. Merge Sort
1. Merge Sort in C1. Merge Sort
1. Merge Sort in C1. Merge Sort
1. Merge Sort in C1. Merge Sort
2. Quick Sort – 빠른 정렬2. Quick Sort
♣ 절차• 기준 원소 (pivot) 을 선정• 기준원소보다 작은 원소는 모두 왼쪽 배열로 ,
• 기준원소보다 크거나 같은 배열은 모두 오른쪽 배열로 가도록분할
• 각각 따로 정렬한 후 , 다시 합병 하며 정렬
( 분할교환정렬 : partition exchange sort)
2. Quick Sort 예제•문제 : n 개의 정수를 비내림차순으로 정렬하시오 .
•입력 : 양의 정수 n, 크기가 n 인 배열 S[1..n]
•출력 : 비내림차순으로 정렬된 배열 S[1..n]
•보기 : 15, 22, 13, 27, 12, 10, 20, 25
2. Quick Sort
2. Quick Sort 예제2. Quick Sort
2. Quick Sort in C2. Quick Sort
2. Quick Sort in C2. Quick Sort
3. Heap Sort – 힙 정렬• 완전 이진 트리에 있는노드 중
키 값이 가장 큰 노드 or 키 값이 가장 작은 노드를 찾기 위해 만든 자료구조
3. Heap Sort
§ 완전 이진트리
3. Heap Sort – 힙 정렬3. Heap Sort
§ 최대 힙 , 최소 힙
( ≥ 부모 노드의 키 값 자식 노드의 키 값 ) ( ≤ 부모 노드의 키 값 자식 노드의 키 값 )
3. Heap Sort – 힙 정렬
♣ 절차 ① 정렬한 원소 들을 입력하여 최대 힙 구성 ②힙에대하여 삭제 연산 을 수행하여 얻은 원소를 마지막 자리에
배치 ③나머지 원소에 대해서 다시 최대 힙 로 재구성
원소의 개수만큼 2~3 을 반복 수행
§ →최대 힙 내림차순 , →최소 힙 오름차순
3. Heap Sort
3. Heap Sort 예제• 문제 : 정렬되지 않은 [69, 10, 30, 2, 16, 8, 31, 22] 의 자료들을
정렬
3. Heap Sort
30
3. Heap Sort 예제• 힙에 삭제 연산을 수행• 루트 노드의 원소 69 를 구해서 배열의 마지막 자리에 저장 .
• 나머지 원소들에 대해서 최대 힙으로 재구성 .
3. Heap Sort
3. Heap Sort 예제• 위 과정을 반복
3. Heap Sort
3. Heap Sort 예제• 위 과정을 반복
3. Heap Sort
3. Heap Sort 예제• 위 과정을 반복
3. Heap Sort
3. Heap Sort 예제• 위 과정을 반복
3. Heap Sort
3. Heap Sort in C3. Heap Sort
3. Heap Sort in C3. Heap Sort
3. Heap Sort in C3. Heap Sort