1 / 13

1. 내부정렬 (1) 삽입법 - 삽입 정렬 (insertion sort)

2.5 정렬 (Sorting). 1. 내부정렬 (1) 삽입법 - 삽입 정렬 (insertion sort) - 셀 정렬 (shell sort) (2) 선택법 - 힙 정렬 (heap sort) (3) 교환법 - 퀵 정렬 (quick sort) - 셀렉션 정렬 (selection sort)

Télécharger la présentation

1. 내부정렬 (1) 삽입법 - 삽입 정렬 (insertion sort)

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. 2.5 정렬(Sorting) 1. 내부정렬 (1) 삽입법 - 삽입 정렬(insertion sort) - 셀 정렬(shell sort) (2) 선택법 - 힙 정렬(heap sort) (3) 교환법 - 퀵 정렬(quick sort) - 셀렉션 정렬(selection sort) - 버블 정렬(bubble sort) (4) 분배법 - 기수정렬(radix sort) (5) 병합법 - 2_way_merge 2. 외부정렬 (1) 균형 합병 정렬(balanced merge sort) (2) 다단계 합병 정렬(polyphase merge sort) (3) 계단식 합병 정렬(cascade merge sort) (4) 오실레이팅 합병 정렬(oscillating merge sort)

  2. 10 6 8 9 5 6 10 8 9 5 6 8 10 9 5 6 8 9 10 5 5 6 8 9 10 (1) 삽입법 ① 삽입 정렬(insertion sort) - 한 레코드씩 차례로 서로 비교한 후 크기에 따라 순서대로 정렬하는 방법 - 가장 간단한 방법으로 어느 정도 정렬이 되어 있을 경우 매우 효과적 - 예) 초기단계 1회전 2회전 3회전 4회전 - 평균 비교 횟수 : n(n-1)/4 (데이터가 부분적으로 정렬된 경우) 최대 비교 횟수 : n(n-1)/2 (데이터가 역순으로 된 경우) 최소 비교 횟수 : n-1 (데이터가 이미 정렬된 경우) 연산시간 : O(n2)

  3. ② 셀 정렬(shell sort) - 매개변수의 값을 점점 감소시키면서 정렬하는 방법 (매개변수가 1이되면 정렬완료) - 예) 초기상태 : 11 5 3 7 9 매개변수(d) = 3일 때 sort1 11 5 3 7 9 7 5 3 11 9 매개변수(d) = 2일 때 sort2 7 5 3 11 9 3 5 7 11 9 매개변수(d) = 1일 때 sort3 3 5 7 11 9 3 5 7 9 11 - 연산시간 : 최악 O(nlog2n) 평균 O(n n)

  4. 29 29 67 29 30 30 57 30 21 13 13 21 45 45 67 67 57 50 57 55 16 16 16 16 13 21 21 13 18 18 18 18 67 45 30 45 55 57 55 29 29 21 67 16 13 45 57 18 30 55 (2) 선택법 ① 힙 정렬(heap sort) - 자식 노드의 값이 부모 노드보다 작지 않은 전이진 트리의 힙 구조를 이용 (트리정렬) - 정렬 속도가 빠르다. - 예) - 연산시간 : O(nlog2n)

  5. 1 2 3 4 5 6 7 8 9 10 11 12 13 9 73 42 1 80 39 72 30 100 46 82 32 17 9 17 42 1 32 39 46 30 72 100 82 80 73 9 17 30 1 32 39 46 42 72 100 82 80 73 9 1 17 30 32 39 42 46 72 73 80 82 100 1 9 17 30 32 39 42 46 72 73 80 82 100 (3) 교환법 ① 퀵 정렬(quick sort) - 특정 키 값을 기준키로 하여 기준키보다 작은 값과 큰 값을 분리하여 정렬 - 정렬 속도가 빠르다. - 예) No. - 연산시간 : O(nlog2n)

  6. 15 10 5 7 8 5 15 10 7 8 5 7 15 10 8 5 7 8 15 10 5 7 8 10 15 ② 셀렉션 정렬(selection sort) - 차례대로 최소값을 맨 앞으로 이동하여 정렬 - interchange sort - 예) 초기단계 - 평균비교횟수 : n(n-1)/2 연산시간 : O(n2)

  7. 9 4 6 10 8 9 4 6 10 8 4 6 9 8 10 4 6 9 8 10 4 6 8 9 10 ③ 버블 정렬(bubble sort) - 인접한 레코드 값들끼리 비교하여 자리 교환을 통해 정렬 - shifting sort, transposition sort - 예) 초기단계 1단계 2단계 - 최대비교횟수 : n(n-1)/2 평균비교횟수 : n(n-1)/4 최소비교횟수 : n-1 (flag를 두는 경우) 연산시간 : O(n2)

  8. bucket 0 1 2 3 4 5 6 7 8 9 10 1 82 13 24 5 8 19 queue 31 63 74 48 bucket 0 1 2 3 4 5 6 7 8 9 1 10 24 31 48 63 74 82 queue 5 13 8 19 (4) 분배법 ① 기수 정렬(radix sort) - 여러 개의 queue에 나누어 십진수 자리별로 분배한 다음 FIFO방식으로 정렬 - 정렬하려는 키의 개수가 n이면 n개의 버켓(bucket)이 필요(bucket sort, 다중키 정렬) - 정렬시간은 빠르나 많은 queue가 필요 - 예) 초기데이터 1, 19, 24, 13, 31, 8, 82, 48, 74, 63, 5, 10 ① 1단위 숫자에 대한 배열 분류 : 10, 1, 31, 82, 13, 63, 24, 74, 5, 8, 48, 19 ② 10단위 숫자에 대한 배열 분류 : 1, 5, 8, 10, 13, 19, 24, 31, 48, 63, 74, 82 - 연산시간 : O(d(n+q)) (d:키의 수, n:레코드의 수, q:큐의 수)

  9. 19 11 26 43 92 87 21 38 11 19 26 43 87 92 21 38 11 19 26 43 21 38 87 92 11 19 21 26 38 43 87 92 (5) 병합법 ① 2-Way Merge 정렬 - 완전히 정렬이 된 서로 다른 두 개의 파일을 혼합하여 정렬된 한 개의 파일로 작성 - 예) 초기데이터 19, 11, 26, 43,92, 87, 21, 38 (8개) 초기단계 1단계 2단계 3단계 - 연산시간 : O(nlog2n)

  10. 2. 외부정렬 대용량의 데이터를 몇 개의 서브파일(run)로 나누어 각각 정렬한 후에 테이프나 디스크 내에 서 각 서브파일을 합병하는 방법 (1) 균형 합병 정렬(balanced merge sort) - 자기 테이프에 의한 정렬 중 가장 기본 - 입/출력 파일 수를 같은 수로 배정해서 앞에서 출력된 파일을 다음 번 입력 파일로 사용 (2) 다단계 합병 정렬(polyphase merge sort) - 피보나치 순열에 의해 m개의 입력 run(서브 파일)들을 테이프에 분배해서 정렬 (3) 계단식 합병 정렬(cascade merge sort) - 피보나치 순열을 사용 - 처음에는 m개의 입력 파일을 합병하고, 다음에는 m-1개, 다음에는 m-2개의 파일을 합병하고, 최종적으로 하나의 테이프에 수록될 때까지 반복 수행하여 작업 종료 (4) 오실레이팅 합병 정렬(oscillating merge sort) - 양방향이 가능한 테이프를 사용하는 정렬 방식 (역으로 읽기 기능 유효)

  11. ◆ 다시 한 번 1. 내부정렬 (1) 삽입법 - 삽입 정렬(insertion sort) : 하나씩 증가하며 비교 - 셀 정렬(shell sort) : 매개변수 (2) 선택법 - 힙 정렬(heap sort) : tree sort (3) 교환법 - 퀵 정렬(quick sort) : 큰 값, 작은 값으로 분리 - 셀렉션 정렬(selection sort) : 작은 값을 찾아 앞으로 - 버블 정렬(bubble sort) : 인접한 것과 비교 (4) 분배법 - 기수정렬(radix sort) : 1의 자리 기준 -> 10의 자리 기준 (5) 병합법 - 2_way_merge : (2개 -> 4개 -> 8개) subfile 2. 외부정렬 (1) 균형 합병 정렬(balanced merge sort) (2) 다단계 합병 정렬(polyphase merge sort) (3) 계단식 합병 정렬(cascade merge sort) (4) 오실레이팅 합병 정렬(oscillating merge sort)

  12. 기출 . 예상 문제 1. 다음 중 주기억장치 내에서 이루어지는 정렬 방법은? ① oscillation sort ② balanced sort ③ polyphase sort ④ insertion sort 2. 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방법으로 키를 기준으로 작은 값은 왼쪽에 큰 값은 오른쪽에 모이도록 교환시키는 부분 교환 정렬법은? ① 퀵 정렬 (quick sort) ② 쉘 정렬 (shell sort) ③ 삽입 정렬 (insertion sort) ④ 선택 정렬 (selection sort) 3. 다음은 어떤 정렬 방법을 설명한 것인가? - 두 개의 키들을 한 쌍으로 하여 각 쌍에 대하여 순서를 정한다. - 순서대로 정렬된 각 쌍의 키들을 합병하여 하나의 정렬된 서브 리스트로 만든다. - 위 과정의 정렬된 서브 리스트들을 하나의 정렬된 파일이 될 때까지 반복한다. ① 2-way-합병 정렬 ② 퀵 정렬 ③ 기수 정렬 ④ 버블 정렬

  13. 기출 . 예상 문제 4. 아래 자료에서 65를 찾기 위하여 2진 검색할 경우 비교해야 할 횟수는? 3, 18, 47, 54, 65, 83, 94, 97 ① 2 ② 3 ③ 4 ④ 5 5. 자료가 아래와 같을 때, 삽입(insertion) 정렬 방법을 적용하여 오름차순으로 정렬할 경우 pass1 을 수행한 결과는? 자료 : 20, 19, 14, 16, 18 ① 19, 20, 14, 16, 18 ② 14, 20, 19, 16, 18 ③ 14, 19, 20, 16, 18 ④ 20, 14, 19, 16, 18 6. 외부 정렬(external sort)에 해당하지 않는 것은? ① balanced sort ② cascade sort ③ heap sort ④ polyphase sort

More Related