advanced sorting concepts

25
전전전전전 전전전전전전전 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

Upload: demetrius-daniels

Post on 04-Jan-2016

33 views

Category:

Documents


0 download

DESCRIPTION

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

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