1 / 25

Advanced Sorting Concepts

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 데이터 처리에서 빈번하게 자주 일어나는 작업으로 , 어떤 특정한 키 값에 따라 순서적으로 배열하는 작업 소트 알고리즘의 분류 처리하고자 할 대상 ( 데이터 ) 의 양에 따라

Download Presentation

Advanced Sorting Concepts

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 11.1 General Sort Concepts 11.2 Insertion Sorts 11.3 Selection Sorts 11.4 Exchange Sorts Advanced Sorting Concepts

  2. 1. General Sort Concepts -1 Topic ← modify master • Sort • 데이터 처리에서 빈번하게 자주 일어나는 작업으로, 어떤 특정한 키 값에 따라 순서적으로 배열하는 작업 • 소트 알고리즘의 분류 • 처리하고자 할 대상(데이터)의 양에 따라 • Internal Sort( 내부 소트 ) • 소트할 대상(데이터)를 전부 주 기억장치 안에서 처리하는 방법 • Insertion Sort / Bubble Sort / Selection Sort / Shell Sort / Heap Sort / Quick Sort 등 대표적인 소트 알고리즘 • External Sort( 외부 소트) • 소트할 대상이 너무 많기 때문에 소량의 소트할 데이터만을 주 기억 장치에 저장하고, 대부분의 데이터는 외부 기억장치에 저장하여 소트를 처리하는 방법

  3. 1. General Sort Concepts -2 • 소트 방법의 분류

  4. 1. General Sort Concepts -3 • Sort Order • 오름 차순( ascending order ) • 내림 차순( descending order ) • Sort Stability • 동일한 키 값을 가지는 데이터에 대하여 소트 결과를 출력할 때, 입력순서를 적용시키는 가를 가리키는 소트 알고리즘의 속성(Attribute) • 예를 들어 • Stable Sort Algorithm • Insertion Sort / Selection Sort / Bubble Sort • 그 외 나머지는 Unstable

  5. 1. General Sort Concepts -4 • Sort Efficiency • 소트 알고리즘의 상대적인 효율성을 말하는 척도 • 입력 데이터를 정렬하는데, 몇 번의 비교 연산과 몇 번의 데이터 이동을 요하는지를 대략적으로 말하는 것 • 가장 소트 효율성이 좋은 알고리즘(Quick Sort)의 경우 nlog2n의 차수를 가짐 • Passes • 소트 작업을 수행하는 동안에, 데이터들은 여러 번에 걸쳐서 데이터 값을 비교한다. 한 차례 데이터들이 차례로 비교되는 과정을 Sort Pass라 함 • Sort Pass되는 동안에, 모든 데이터가 비교되어질 수 있고, 일부분만 비교되어질 수 도 있음( 소트 알고리즘의 특성에 따라 )

  6. 2. Insertion Sorts -1 • Straight Insertion Sort( 연속 삽입 소트 ) • 예를 들어 카드 놀이를 할 때 자주 쓰게 되는 방법으로, 카드 뭉치에서 카드 한 장을 뽑아 손에 들고 있는 카드들 사이에 적절한 위치에 끼워 놓은 방법 • 즉, 각 Pass마다 소트되지 않은 리스트에서 한 개의 데이터를 빼내어 소트된 리스트의 적절한 위치에 삽입하는 것 • 알고리즘 11-1

  7. 2. Insertion Sorts -2 • Shell Sort -1 • 데이터를 소트하는데, 파티션(Partition)의 수를 감소시키는 방법을 사용하여 연속 삽입 소트 알고리즘을 개선한 것 • 예를 들어, 주어진 N개의 요소를 가진 리스트를 소트하기 위해 • 리스트를 K개의 세그먼트로 나눈다. • 보통 K는 Increment 라고도 부르기도 함 • 각각의 세그먼트는 N/K 개, 또는 그 이하의 요소로 구성됨 • 각 세그먼트 단위로 소트 • Increment을 2등분한 다음 다시 소트  결국 하나의 세그먼트가 될 때까지 소트

  8. 2. Insertion Sorts -3 • Shell Sort -2 • Shell Sort 과정( 초기 K(Increment) = 5 ) - 알고리즘 11-2, 511 Page-

  9. 2. 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. 2. 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. 3. Selection Sorts -1 • Selection Sort • 주어진 데이터 리스트를 소트하기 위해, 리스트에 가장 작은 데이터를 선택하여 소트된 리스트에 놓고, 그 다음 리스트에 가장 작은 데이터를 선택하여 소트된 리스트에 놓고, 이러한 과정을 계속해서 수행함으로써 소트를 수행하는 방법 • 알고리즘의 종류 • Straight Selection Sort • Heap Sort

  12. 3. Selection Sorts -2 • Straight Selection Sort • 개념 • 알고리즘 11-3

  13. 3. Selection Sorts -3 • Heap Sort -1 • Straight Selection Sort 알고리즘을 개선 • 소트되지 않은 모든 데이터를 스캔하여 가장 작은 값을 선택 • n개의 데이터 중에서 가장 작은 키를 찾는데 n-1회의 키 비교  소트 속도가 매우 느림 • 힙 소트의 경우 • 힙은 트리구조이기 때문에, 가장 큰 키를 찾는데, 모든 데이터를 스캔할 필요가 없음. 다만, 트리의 가지를 따라서 가장 키가 큰 데이터를 루트노드로 옮기게 한다. 즉 힙을 재구성하게 된다. • 힙의 재구성은 알고리즘이 Straight Selection Sort 알고리즘보다 속도가 빠름

  14. 3. Selection Sorts -4 • Heap Sort -2 • Heap Sort 과정 • 알고리즘 11-4

  15. 3. Selection Sorts -5 • Algorithm Efficiency • Straight Selection Sort : O(n2) • Heap Sort : O(nlog2n) • 성능 비교 : Table 11-2

  16. 4. Exchange Sorts -1 • Exchange Sorts • 순서에 맞지 않는 데이터들을 모든 리스트의 데이터가 소트될 때가지 교환하는 방식 • Bubble Sort • Quick Sort : 가장 효율적인 범용 소트 알고리즘

  17. 4. Exchange Sorts -2 • Bubble Sort • 개념 • 알고리즘 11-5

  18. 4. Exchange Sorts -3 • Quick Sort -1 • 소트가 이루어지는 동안 리스트의 Pivot이라고 불리는 하나의 데이터를 선택한 다음, 세 그룹으로 나눈다. • 왼쪽 파티션은 Pivot 키 값보다 작은 데이터들의 집합 • Pivot 자신 • 오른쪽 파티션은 Pivot 키 값보다 큰 데이터들의 집합 • 왼쪽, 오른쪽 파티션에 대해서도 ①번 작업을 계속 수행한다. • 이런 개념으로, 소트를 처리하는 방법

  19. 4. 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. 4. Exchange Sorts -5 • Quick Sort -3 • 중간 값 결정 및 Quick Sort 일부 과정

  21. 4. Exchange Sorts -6 • Quick Sort -4 • Quick Sort 진행 과정

  22. 4. 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. 5. 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. 5. External Sort -2 • 간단한 병합 소트( Merge Sort )

  25. 123 112 104 105 98 98 86 5. External Sort -3 File Heap 99 73 65 23 18 . . . . . 88 85 76 65 54 . . . . . 78 54 45 34 28 . . . . . 78 54 45 34 28 . . . . . File

More Related