1 / 25

C 로 배우는 알고리즘 - 5.10 ~ 5.12 -

C 로 배우는 알고리즘 - 5.10 ~ 5.12 -. 민 주 홍 y2kminju@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2011.07.19. 목차. 병합 정렬 외부 정렬 정리. 병합 정렬 (1/9). 단 , 병합에서는 반드시 한 쪽이 먼저 소진되는 경우가 발생하므로 이에 대한 대비도 있어야 한다. 병합 정렬 (Merge Sort) 정렬된 두 파일을 병합 (Merge) 하는 과정을 일반화한 것 접근 방법이 순차적 (Sequential) 이다. 병합 정렬 (2/9).

caden
Download Presentation

C 로 배우는 알고리즘 - 5.10 ~ 5.12 -

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. C로 배우는 알고리즘- 5.10 ~ 5.12 - 민 주 홍 y2kminju@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2011.07.19

  2. 목차 병합 정렬 외부 정렬 정리 IST (Information Sciences & Technology) Laboratory

  3. 병합 정렬(1/9) 단, 병합에서는 반드시 한 쪽이 먼저 소진되는 경우가 발생하므로 이에 대한 대비도 있어야 한다. • 병합 정렬(Merge Sort) • 정렬된 두 파일을 병합(Merge)하는 과정을 일반화한 것 • 접근 방법이 순차적(Sequential)이다 IST (Information Sciences & Technology) Laboratory

  4. 병합 정렬(2/9) 배열 a, b, c a 배열의 자료 수 na b 배열의 자료 수 nb 2.1 2.2 2.3 2.4 Size = 1; Size가 N보다 작을 동안 Size의 크기로 배열을 분할하여 두 분할씩 차례로 병합한다 Size = Size * 2 • merge( ) • 병합 정렬의 전략 • 단위가 작은 1에서부터 두배씩 늘려가면서 병합을 반복하여 정렬함 IST (Information Sciences & Technology) Laboratory

  5. 병합 정렬(3/9) IST (Information Sciences & Technology) Laboratory 병합 정렬의 실제

  6. 병합 정렬(4/9) 병합 정렬의 실제 IST (Information Sciences & Technology) Laboratory

  7. 병합 정렬(5/9) 병합 정렬의 실제 IST (Information Sciences & Technology) Laboratory

  8. 병합 정렬(6/9) first second second first first second C로 구현한 병합 정렬 IST (Information Sciences & Technology) Laboratory

  9. 병합 정렬(7/9) merge_sort() IST (Information Sciences & Technology) Laboratory

  10. 병합 정렬(8/9) 병합 정렬의 분석 IST (Information Sciences & Technology) Laboratory

  11. 병합 정렬(9/9) 일반화한 병합 정렬 IST (Information Sciences & Technology) Laboratory

  12. 외부 정렬(1/7) • 외부 정렬(External Sort) • 보조 기억 장치에 저장된 파일을 지정한 순서로 재배열 하는 작업 • 알고리즘의 진행 부분보다 레코드를 읽고 쓰는데 더 많은 시간이 걸린다 • 순차 접근 장치(Sequential Access Device) • 백업용 테이프장치 • 현재위치에서 테이프를 감으면서 순차적으로 이동 • 직접 접근 장치(Direct(Random) Access Device) • 디스크 장치 • 임의의 위치로 접근하기 위해서 디스크의 회전과 헤드의 이동으로 접근 IST (Information Sciences & Technology) Laboratory

  13. 외부 정렬(2/7) • 외부 정렬의 전략 • 내부 정렬용 메모리 공간을 만들어 디스크 파일을 쪼개어 읽는다 • 버퍼의 내용을 내부 정렬하여 그 결과를 임시파일로 디스크에 넣는다 IST (Information Sciences & Technology) Laboratory

  14. 외부 정렬(3/7) ※ 파일을 쪼개어 내부 정렬 메모리로 읽어 정렬한 뒤에 “O.TMP”로 저장 메모리로 읽어 정렬한 뒤에 “1.TMP”로 저장 메모리로 읽어 정렬한 뒤에 “2.TMP”로 저장 메모리로 읽어 정렬한 뒤에 “3.TMP”로 저장 • 외부 정렬의 실제 IST (Information Sciences & Technology) Laboratory

  15. 외부 정렬(4/7) 파일 처리를 위한 파일 포인터를 저장하는 변수 나중에 임시 파일의 삭제를 위해서 임시 파일의 이름을 저장하는 변수 해당 파일에서 병합을 위해 제시할 값을 저장함 파일이 소진되었는가를 나타내는 변수 0.TMP 1.TMP 2.TMP 3.TMP A E L O R T A N O R S T G I L O R T H M FILE *fp fname:“0.TMP” v : A is_eof : FALSE FILE *fp fname:”1.TMP” v : A Is_eof : FALSE FILE *fp fname:”2.TMP” v : G Is_eof : FALSE FILE *fp fname:”3.TMP” v : H Is_eof : FALSE Entry의 v중 최소값을 선택 결 과 파 일 IST (Information Sciences & Technology) Laboratory 외부 정렬 파일 병합

  16. 외부 정렬(5/7) External_sort() IST (Information Sciences & Technology) Laboratory

  17. 외부 정렬(6/7) IST (Information Sciences & Technology) Laboratory

  18. 외부 정렬(7/7) index • 외부 정렬의 분석 • 10,000개의 자료를 주고 실행한 결과,O(NlngN)의 내부정렬에 비해 느리지만 외부정렬중 상당히 빠른 결과를 얻을 수 있다 • fseek( )함수(포인터를 파일 끝으로 보내는 함수)를 사용 안함 • rewind( )함수(포인터를 초기화 시키는 함수)를 이용함 • 간접 정렬 방법 IST (Information Sciences & Technology) Laboratory

  19. 정 리(1/6) 정렬 라이브러리 IST (Information Sciences & Technology) Laboratory

  20. 정 리(2/6) 삽입, 거품, 퀵 정렬이 효율이 좋다 • 시간 측정 결과 정렬된 배열에 대한 각 정렬 함수의 실행시간 IST (Information Sciences & Technology) Laboratory

  21. 정 리(3/6) 퀵 정렬이 가장 뛰어나지만 기타 O(NlogN)의 성능을 가지는 정렬 방법들이 유효하다 • 난수 배열에 대한 각 정렬 함수의 실행 시간 IST (Information Sciences & Technology) Laboratory

  22. 정 리(4/6) 퀵, 쉘, 병합 정렬 정도가 뛰어난 성능을 보인다 • 반쯤 정렬된 배열에 대한 각 정렬 함수의 실행 시간 IST (Information Sciences & Technology) Laboratory

  23. 정 리(5/6) 퀵,쉘은 여전히 뛰어난 성능을 보인다 • 역순 배열에 대한 각 정렬 함수의 실행 시간 IST (Information Sciences & Technology) Laboratory

  24. 정 리(6/6) IST (Information Sciences & Technology) Laboratory • 각 정렬 함수의 메모리 요소와 안정성

  25. 민 주 홍y2kminju@kunsan.ac.kr 감사합니다

More Related