Top Banner
전전전전전 전전전전전전전 11 11 Advanced Sorting Concepts Advanced Sorting Concepts 11.1 General Sort Concepts 11.2 Insertion Sorts 11.3 Selection Sorts 11.4 Exchange Sorts
25

Advanced Sorting Concepts

Jan 04, 2016

Download

Documents

11.1 General Sort Concepts 11.2 Insertion Sorts 11.3 Selection Sorts 11.4 Exchange Sorts. Advanced Sorting Concepts. 1. General Sort Concepts -1. Topic ← modify master. Sort 데이터 처리에서 빈번하게 자주 일어나는 작업으로 , 어떤 특정한 키 값에 따라 순서적으로 배열하는 작업 소트 알고리즘의 분류 처리하고자 할 대상 ( 데이터 ) 의 양에 따라 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Advanced Sorting Concepts

전북대학교 전자정보공학부

1111 Advanced Sorting ConceptsAdvanced Sorting Concepts

11.1 General Sort Concepts11.2 Insertion Sorts11.3 Selection Sorts11.4 Exchange Sorts

Page 2: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 3: Advanced Sorting Concepts

전북대학교 전자정보공학부 3

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

1. General Sort Concepts -21. General Sort Concepts -2

소트 방법의 분류

Page 4: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 5: Advanced Sorting Concepts

전북대학교 전자정보공학부 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 되는 동안에 , 모든 데이터가 비교되어질 수 있고 , 일부분만

비교되어질 수 도 있음 ( 소트 알고리즘의 특성에 따라 )

Page 6: Advanced Sorting Concepts

전북대학교 전자정보공학부 6

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

2. Insertion Sorts -12. Insertion Sorts -1

Straight Insertion Sort( 연속 삽입 소트 ) 예를 들어 카드 놀이를 할 때 자주 쓰게 되는 방법으로 , 카드 뭉치에서 카드

한 장을 뽑아 손에 들고 있는 카드들 사이에 적절한 위치에 끼워 놓은 방법 즉 , 각 Pass 마다 소트되지 않은 리스트에서 한 개의 데이터를 빼내어

소트된 리스트의 적절한 위치에 삽입하는 것

알고리즘 11-1

Page 7: Advanced Sorting Concepts

전북대학교 전자정보공학부 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 등분한 다음 다시 소트 결국 하나의 세그먼트가 될 때까지

소트

Page 8: Advanced Sorting Concepts

전북대학교 전자정보공학부 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-

Page 9: Advanced Sorting Concepts

전북대학교 전자정보공학부 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 을 선택하는 것이 바람직

Page 10: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 11: Advanced Sorting Concepts

전북대학교 전자정보공학부 11

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

3. Selection Sorts -13. Selection Sorts -1

Selection Sort 주어진 데이터 리스트를 소트하기 위해 , 리스트에 가장 작은 데이터를

선택하여 소트된 리스트에 놓고 , 그 다음 리스트에 가장 작은 데이터를 선택하여 소트된 리스트에 놓고 , 이러한 과정을 계속해서 수행함으로써 소트를 수행하는 방법

알고리즘의 종류 Straight Selection Sort Heap Sort

Page 12: Advanced Sorting Concepts

전북대학교 전자정보공학부 12

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

3. Selection Sorts -23. Selection Sorts -2

Straight Selection Sort 개념

알고리즘 11-3

Page 13: Advanced Sorting Concepts

전북대학교 전자정보공학부 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 알고리즘보다 속도가 빠름

Page 14: Advanced Sorting Concepts

전북대학교 전자정보공학부 14

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

3. Selection Sorts -43. Selection Sorts -4

Heap Sort -2 Heap Sort 과정

알고리즘 11-4

Page 15: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 16: Advanced Sorting Concepts

전북대학교 전자정보공학부 16

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

4. Exchange Sorts -14. Exchange Sorts -1

Exchange Sorts 순서에 맞지 않는 데이터들을 모든 리스트의 데이터가 소트될 때가지

교환하는 방식 Bubble Sort Quick Sort : 가장 효율적인 범용 소트 알고리즘

Page 17: Advanced Sorting Concepts

전북대학교 전자정보공학부 17

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

4. Exchange Sorts -24. Exchange Sorts -2

Bubble Sort 개념

알고리즘 11-5

Page 18: Advanced Sorting Concepts

전북대학교 전자정보공학부 18

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

4. Exchange Sorts -34. Exchange Sorts -3

Quick Sort -1① 소트가 이루어지는 동안 리스트의

Pivot 이라고 불리는 하나의 데이터를 선택한 다음 , 세 그룹으로 나눈다 . 왼쪽 파티션은 Pivot 키

값보다 작은 데이터들의 집합 Pivot 자신 오른쪽 파티션은 Pivot 키

값보다 큰 데이터들의 집합② 왼쪽 , 오른쪽 파티션에 대해서도

①번 작업을 계속 수행한다 .③ 이런 개념으로 , 소트를 처리하는

방법

Page 19: Advanced Sorting Concepts

전북대학교 전자정보공학부 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 을 약간 변경 )

Page 20: Advanced Sorting Concepts

전북대학교 전자정보공학부 20

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

4. Exchange Sorts -54. Exchange Sorts -5

Quick Sort -3 중간 값 결정 및 Quick Sort 일부 과정

Page 21: Advanced Sorting Concepts

전북대학교 전자정보공학부 21

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

4. Exchange Sorts -64. Exchange Sorts -6

Quick Sort -4 Quick Sort 진행 과정

Page 22: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 23: Advanced Sorting Concepts

전북대학교 전자정보공학부 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

Page 24: Advanced Sorting Concepts

전북대학교 전자정보공학부 24

Topic ←

mod

ify

maste

r

Advanced Sorting Concepts

5. External Sort -25. External Sort -2

간단한 병합 소트 ( Merge Sort )

Page 25: Advanced Sorting Concepts

전북대학교 전자정보공학부 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