Advanced Sorting Concepts
-
Upload
demetrius-daniels -
Category
Documents
-
view
33 -
download
0
description
Transcript of Advanced Sorting Concepts
전북대학교 전자정보공학부
1111 Advanced Sorting ConceptsAdvanced Sorting Concepts
11.1 General Sort Concepts11.2 Insertion Sorts11.3 Selection Sorts11.4 Exchange Sorts
전북대학교 전자정보공학부 2
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
1. General Sort Concepts -11. General Sort Concepts -1
Sort 데이터 처리에서 빈번하게 자주 일어나는 작업으로 , 어떤 특정한 키 값에 따라
순서적으로 배열하는 작업 소트 알고리즘의 분류
처리하고자 할 대상 ( 데이터 ) 의 양에 따라 Internal Sort( 내부 소트 )
– 소트할 대상 ( 데이터 ) 를 전부 주 기억장치 안에서 처리하는 방법– Insertion Sort / Bubble Sort / Selection Sort / Shell Sort /
Heap Sort / Quick Sort 등 대표적인 소트 알고리즘 External Sort( 외부 소트 )
– 소트할 대상이 너무 많기 때문에 소량의 소트할 데이터만을 주 기억 장치에 저장하고 , 대부분의 데이터는 외부 기억장치에 저장하여 소트를 처리하는 방법
Topic ←
mod
ify
maste
r
전북대학교 전자정보공학부 3
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
1. General Sort Concepts -21. General Sort Concepts -2
소트 방법의 분류
전북대학교 전자정보공학부 4
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
1. General Sort Concepts -31. General Sort Concepts -3
Sort Order 오름 차순 ( ascending order ) 내림 차순 ( descending order )
Sort Stability 동일한 키 값을 가지는 데이터에 대하여 소트 결과를 출력할 때 , 입력순서를
적용시키는 가를 가리키는 소트 알고리즘의 속성 (Attribute) 예를 들어
Stable Sort Algorithm Insertion Sort / Selection Sort / Bubble Sort 그 외 나머지는 Unstable
전북대학교 전자정보공학부 5
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
1. General Sort Concepts -41. General Sort Concepts -4
Sort Efficiency 소트 알고리즘의 상대적인 효율성을 말하는 척도 입력 데이터를 정렬하는데 , 몇 번의 비교 연산과 몇 번의 데이터 이동을
요하는지를 대략적으로 말하는 것 가장 소트 효율성이 좋은 알고리즘 (Quick Sort) 의 경우 nlog2n 의 차수를
가짐
Passes 소트 작업을 수행하는 동안에 , 데이터들은 여러 번에 걸쳐서 데이터 값을
비교한다 . 한 차례 데이터들이 차례로 비교되는 과정을 Sort Pass 라 함 Sort Pass 되는 동안에 , 모든 데이터가 비교되어질 수 있고 , 일부분만
비교되어질 수 도 있음 ( 소트 알고리즘의 특성에 따라 )
전북대학교 전자정보공학부 6
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
2. Insertion Sorts -12. Insertion Sorts -1
Straight Insertion Sort( 연속 삽입 소트 ) 예를 들어 카드 놀이를 할 때 자주 쓰게 되는 방법으로 , 카드 뭉치에서 카드
한 장을 뽑아 손에 들고 있는 카드들 사이에 적절한 위치에 끼워 놓은 방법 즉 , 각 Pass 마다 소트되지 않은 리스트에서 한 개의 데이터를 빼내어
소트된 리스트의 적절한 위치에 삽입하는 것
알고리즘 11-1
전북대학교 전자정보공학부 7
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
2. Insertion Sorts -22. Insertion Sorts -2
Shell Sort -1 데이터를 소트하는데 , 파티션 (Partition) 의 수를 감소시키는 방법을 사용하여 연속
삽입 소트 알고리즘을 개선한 것 예를 들어 , 주어진 N 개의 요소를 가진 리스트를 소트하기 위해
① 리스트를 K 개의 세그먼트로 나눈다 .– 보통 K 는 Increment 라고도 부르기도 함– 각각의 세그먼트는 N/K 개 , 또는 그 이하의 요소로 구성됨
② 각 세그먼트 단위로 소트③ Increment 을 2 등분한 다음 다시 소트 결국 하나의 세그먼트가 될 때까지
소트
전북대학교 전자정보공학부 8
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
2. Insertion Sorts -32. Insertion Sorts -3
Shell Sort -2 Shell Sort 과정 ( 초기 K(Increment) = 5 )
- 알고리즘 11-2, 511 Page-
전북대학교 전자정보공학부 9
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
2. Insertion Sorts -42. Insertion Sorts -4
Shell Sort -3 Selecting the Increment Size
Increment 의 크기를 정하는데 있어서 , 모든 경우에 최고의 소트 성능을 보장 받을 수 있는 방법은 없음
쉘 소트에서 고려해야 할 중요한 사항– 최소 횟수의 Pass( Increment 의 수 ) 로 소트를 끝내는 것
세그먼트에 있는 요소들의 수를 최소화하는 일– 한 리스트에 있는 요소들의 수를 줄일 수 있는 한 가지 방법
» Prime Number 을 사용하는 것 동적으로 계산 상대적으로 느린 작업
– 일반적으로» Increment 을 리스트 크기의 반으로 시작하여» 각 Pass 마다 2 로 나누어서 사용
Shell Sort 의 성능은 Quick Sort 의 성능을 따라 가지 못한다 . 따라서 따른 소트를 원한다면 , Shell Sort 에서 Increment 을 최적화하기 보다는 Quick Sort 을 선택하는 것이 바람직
전북대학교 전자정보공학부 10
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
2. Insertion Sorts -52. Insertion Sorts -5
Algorithm Efficiency Sort Effort
소트의 상대적인 효율을 말하는데 , 몇 가지 방법으로 결정할 수 있음 . 예를 들어 ,
– 소트 작업중인 반복 횟수를 계산– 데이터의 이동과 비교 횟수를 계산– 소트 작업이 걸리는 수행 시간
소트 알고리즘들의 효율성을 비교하는 데에는 반복횟수 , 데이터의 이동 횟수 , 비교 횟수를 계산하는 것이 바람직
이 책에선 , 반복횟수만을 계산하여 소트 알고리즘의 효율성을 평가 Straight Insertion Sort
– f(n) = n( n + 1) / 2 O(n2) Shell Sort
– O(nlog2n) 평균적 O(n1.25)
성능 비교 : Table 11-1, 514 Page
전북대학교 전자정보공학부 11
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
3. Selection Sorts -13. Selection Sorts -1
Selection Sort 주어진 데이터 리스트를 소트하기 위해 , 리스트에 가장 작은 데이터를
선택하여 소트된 리스트에 놓고 , 그 다음 리스트에 가장 작은 데이터를 선택하여 소트된 리스트에 놓고 , 이러한 과정을 계속해서 수행함으로써 소트를 수행하는 방법
알고리즘의 종류 Straight Selection Sort Heap Sort
전북대학교 전자정보공학부 12
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
3. Selection Sorts -23. Selection Sorts -2
Straight Selection Sort 개념
알고리즘 11-3
전북대학교 전자정보공학부 13
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
3. Selection Sorts -33. Selection Sorts -3
Heap Sort -1 Straight Selection Sort 알고리즘을 개선
소트되지 않은 모든 데이터를 스캔하여 가장 작은 값을 선택 n 개의 데이터 중에서 가장 작은 키를 찾는데 n-1 회의 키 비교
소트 속도가 매우 느림 힙 소트의 경우
힙은 트리구조이기 때문에 , 가장 큰 키를 찾는데 , 모든 데이터를 스캔할 필요가 없음 . 다만 , 트리의 가지를 따라서 가장 키가 큰 데이터를 루트노드로 옮기게 한다 . 즉 힙을 재구성하게 된다 .
힙의 재구성은 알고리즘이 Straight Selection Sort 알고리즘보다 속도가 빠름
전북대학교 전자정보공학부 14
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
3. Selection Sorts -43. Selection Sorts -4
Heap Sort -2 Heap Sort 과정
알고리즘 11-4
전북대학교 전자정보공학부 15
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
3. Selection Sorts -53. Selection Sorts -5
Algorithm Efficiency Straight Selection Sort : O(n2) Heap Sort : O(nlog2
n)
성능 비교 : Table 11-2
전북대학교 전자정보공학부 16
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -14. Exchange Sorts -1
Exchange Sorts 순서에 맞지 않는 데이터들을 모든 리스트의 데이터가 소트될 때가지
교환하는 방식 Bubble Sort Quick Sort : 가장 효율적인 범용 소트 알고리즘
전북대학교 전자정보공학부 17
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -24. Exchange Sorts -2
Bubble Sort 개념
알고리즘 11-5
전북대학교 전자정보공학부 18
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -34. Exchange Sorts -3
Quick Sort -1① 소트가 이루어지는 동안 리스트의
Pivot 이라고 불리는 하나의 데이터를 선택한 다음 , 세 그룹으로 나눈다 . 왼쪽 파티션은 Pivot 키
값보다 작은 데이터들의 집합 Pivot 자신 오른쪽 파티션은 Pivot 키
값보다 큰 데이터들의 집합② 왼쪽 , 오른쪽 파티션에 대해서도
①번 작업을 계속 수행한다 .③ 이런 개념으로 , 소트를 처리하는
방법
전북대학교 전자정보공학부 19
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -44. Exchange Sorts -4
Quick Sort -2 중간 값 ( Pivot Value ) 결정
중간 값의 위치를 결정하기 위해 세 번의 테스트가 필요– 첫 번째 데이터 ( 인덱스가 0 인 데이터 ) 을 Left 라 하고 ,– 마지막 데이터 ( 인덱스가 last 인 데이터 ) 을 Right 라 하고 ,– 중간 데이터 ( 인덱스가 (0+last)/2 인 데이터 ) 을 Middle 라
하면 이 세 개의 데이터가 Left ≤ Middle ≤ Right 만족하는 순서를 가지도록 교환한다 .( 알고리즘 11-7)
그런 다음 , 중간 값은 배열에서 가장 왼쪽에 위치하도록 한다 .
알고리즘 11-6( Straight Insertion Sort Module 을 약간 변경 )
전북대학교 전자정보공학부 20
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -54. Exchange Sorts -5
Quick Sort -3 중간 값 결정 및 Quick Sort 일부 과정
전북대학교 전자정보공학부 21
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -64. Exchange Sorts -6
Quick Sort -4 Quick Sort 진행 과정
전북대학교 전자정보공학부 22
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
4. Exchange Sorts -74. Exchange Sorts -7
Quick Sort -5 알고리즘 성능
Bubble Sort– f(n)= n(n+1)/2 O(n2)
Quick Sort
– O(nlog2n)
요약 Quick sort 와 Heap sort 의 알고리즘 효율성은 같다 ( O-Notation 상 )
O-Notation 는 실제 소트효율에 대한 근사치 실제 소트효율의 정확한 식을 만든다면 , Quick sort 가 더 효율적
Internal Sort 의 알고리즘 효율성 Table 11-3, 538 Page
전북대학교 전자정보공학부 23
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
5. External Sort -15. External Sort -1
External Sort 소트할 대상이 너무 많기 때문에 소량의 소트할 데이터만을 주 기억 장치에
저장하고 , 대부분의 데이터는 외부 기억장치에 저장하여 소트를 처리하는 방법
Merge Sort
3 34 48 93 99 7 9 10 27 86 12 35 54 67 88 12 35 54 67 88
전북대학교 전자정보공학부 24
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
5. External Sort -25. External Sort -2
간단한 병합 소트 ( Merge Sort )
전북대학교 전자정보공학부 25
Topic ←
mod
ify
maste
r
Advanced Sorting Concepts
5. External Sort -35. External Sort -3
9973652318.....
9973652318.....
8885766554.....
8885766554.....
7854453428.....
7854453428.....
7854453428.....
7854453428.....
123
112 104
105 98 98 86
File
File
Heap