1 / 26

알고리즘 5. 정렬 알고리즘

알고리즘 5. 정렬 알고리즘. 임지희 ambomis@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2011.07.19. 목 차. 선택 정렬 (Selection Sort) 삽입 정렬 (Insertion Sort) 거품 정렬 (Bubble Sort). 선택 정렬 ( 1/8). int 형 배열 정렬 , 정수 배열 int a[] 와 배열 크기 n 을 가진다 . 1. i = 0 2. i 가 n-2 가 되면 끝낸다 . 3. 배열의 i 항부터 n-1 항까지 중

rollin
Download Presentation

알고리즘 5. 정렬 알고리즘

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. 알고리즘5. 정렬 알고리즘 임지희 ambomis@kunsan.ac.kr 군산대학교 정보통계학과 정보과학기술 연구실 2011.07.19

  2. 목 차 • 선택 정렬 (Selection Sort) • 삽입 정렬 (Insertion Sort) • 거품 정렬 (Bubble Sort) IST (Information Sciences & Technology) Laboratory

  3. 선택 정렬 (1/8) int형 배열 정렬, 정수 배열 int a[]와 배열 크기 n을 가진다. 1. i = 02. i가 n-2가 되면 끝낸다.3. 배열의 i항부터 n-1항까지 중 최소값을 찾아서 그 항을 min에 저장.4. 배열의 i항과 min항을 교환한다.5.i를 하나 증가시키고 2로 돌아간다.i범위 : 0 ~ n-2 j 범위 : 1 ~ n-1 • 선택정렬 • 제일 작은 값을 선택하여 제일 앞에서 부터 채워 나가는것 • 많은 비교와 적은 교환 • 선택 정렬 알고리즘 • 흰색 - 최소값, 하늘색 - 최대값 IST (Information Sciences & Technology) Laboratory

  4. 선택 정렬 (2/8) • 선택 정렬 알고리즘 IST (Information Sciences & Technology) Laboratory

  5. 선택 정렬 (3/8) • select_sort() 함수 • 정수형의 배열과 배열 요소의 개수를 인자로 받아 선택정렬 IST (Information Sciences & Technology) Laboratory

  6. 선택 정렬 (4/8) • a[i] • i • 선택 정렬의 과정 • 장점 • 선택 정렬의 비교횟수 N2/2 , 교환횟수 최대 N ( 오로지 남은 부분에 대해 최소값만을 찾아서 한번씩만 교환하면 정렬 됨) • 특징 • 배열의 앞부분부터 차례로 정렬 • 정렬을 하지 않은 부분은 변함 없음 • 내부루프 : 최소값을 찾기 위해 min과 a[j] 비교 IST (Information Sciences & Technology) Laboratory

  7. 선택 정렬 (5/8) • 안정성 문제 • 안정성 : 키의 상대적 순서가 정렬 후에도 변함 없는 것 • 선택 정렬은 안정성이 없음 Ex] T1 ,T2,T3인 T의 순서가 정렬 후 T3 ,T1 ,T2 로 바뀜 • 선택 정렬과 같이 인접한 배열요소를 교환하지 않고 떨어져 있는 요소를 교환하는 경우에는 안정성이 없는 경우가 많음 IST (Information Sciences & Technology) Laboratory

  8. 선택 정렬 (6/8) • 선택 정렬 알고리즘의 실행 시간 분석 • select_sort() 함수를 timer.h를이용하여 시간 측정 • 최악인 경우, 최선인 경우, 평균적인 경우를 찾기 위하여 정렬된배열,난수의배열, 반쯤정렬된배열, 역순의배열로 나누어 시간 측정 • 최악의 경우 : 역순 배열 (N번 교환을 해야 함) • 최선의 경우 : 이미 정렬된 배열 (교환은 없고 비교만 있음) • 결론 1. 선택정렬은 N*(N-1)/2번의 비교를 위해 시간을 다 잡아먹기 때문에 최악의 경우나 최선의 경우나 별 차이가 없음. 차이가 생기는 것은 교환의 횟수일 뿐임. 2. O(N2)의 성능 IST (Information Sciences & Technology) Laboratory

  9. 선택 정렬 (7/8) • 일반적인 함수 제작 • 일반형 정렬함수 gen_select_sort()는 정수배열정렬함수 select_sort()에 비하여 매우 느린 속도를 나타냄 • 이유: 복잡한 포인터 연산을 하고, =연산에mency()함수를 호출해야하기 때문 • 하지만 함수의 변경없이 어떤 형의 자료라도 정렬 할 수 있다는 장점이 있다. IST (Information Sciences & Technology) Laboratory

  10. 선택 정렬 (8/8) 단점 : select_sort()에 비하여 매우느림 *복잡한 포인터 연산 *함수 호출 장점 : 함수의 변경 없이 어떤 형의 자료라도 정렬 할 수 있음 • 일반적인 함수 제작 IST (Information Sciences & Technology) Laboratory

  11. 삽입 정렬 (1/8) 이미 정렬이 된 부분에 새로운 키를 적절한 장소로 삽입하는 동작을 반복적으로 하여 정렬 1. i = 1;2. j = i;3. a[j-1] > a[i] (순서에 맞는 위치까지)이고 j > 0 인 동안3.1 a[j] = a[j-1] --> a[i]를 삽입할 공간을 만든다.3.2 j를 하나 감소한다.4.a[j] = a[i] --> 배열을 옮겨 생긴 빈 공간에 a[i]를 삽입5.i를 하나 증가하고 2로 돌아간다.i범위 : 1 ~ n-1j 범위 : 0 ~ n-2 11 • 삽입정렬 • 이미 정렬된 부분에 새로운 키를 적절한 장소에 삽입하는 동작을 반복 • 삽입정렬의 전략 IST (Information Sciences & Technology) Laboratory

  12. 삽입 정렬 (2/8) 안정성이 있음 IST (Information Sciences & Technology) Laboratory

  13. 삽입 정렬 (3/8) • C로 구현한 삽입 정렬 • t 사용하는 이유 • 안정성을 결정하는 a[j-1] > t IST (Information Sciences & Technology) Laboratory

  14. 삽입 정렬 (4/8) • 삽입 정렬의 분석 • 정렬된 배열 : 매우 빠른 속도( 비교N번, 교환X ) • 난수 배열 : 선택 정렬 보다는 훨씬 효율이 좋음 • 대충 정렬된 배열 : 비교와 교환의 횟수가 작아지므로 빨라짐 • 역순 배열 : 최악의 경우 ( 비교,교환 N*(N-1)/2→ 선택 정렬보다 속도가 느림) 비교 N*(N-1)/2, 교환N • 결론 1.삽입정렬은 입력자료에 굉장히 민감 2.비교 횟수는 적고 교환 횟수가 많아 작은 레코드의 배열에 사용하면 좋음 3. O(N2)의 성능 IST (Information Sciences & Technology) Laboratory

  15. 삽입 정렬 (5/8) • 삽입 정렬의 최적화 • 보초(sentinel)를 사용하여 내부 루프 만들기 • 삽입 정렬할 레코드의 키값이 일정한 범위 내에 있을때 사용 고려해봄 Ex] 키 값이 정수값인데 양의 정수만 다룬다면 배열의 첫 요소 a[0]에 -1을집어 넣고 실제 자료들은 a[1] 이후에 저장. → j>0과 같은 비교문을 하나 없앨 수 있음 → a[0]는 경계의 벗어남을 막아줌 • 많은경우에서 키값의 최소값을 정하지 못하기 때문에 사용에 신중해야함 • 보초 기법의 사용시 삽입정렬의 실행 시간이 단축됨( 특히,N이 클 경우) IST (Information Sciences & Technology) Laboratory

  16. 삽입 정렬 (6/8) • 간접 정렬( index배열 이용 ) • 실제로 a배열을 정렬 • 간접 정렬 • 고려하는 이유 : 삽입 정렬이 비교 횟수는 적지만 교환 횟수가 많기 때문 • 레코드의 배열은 손대지 않고 따로 만든 인덱스의 배열을 조작하는 방법 • 인덱스배열은 간단한 정수배열일 경우가 많으므로 삽입 정렬을 사용하면 효율적 IST (Information Sciences & Technology) Laboratory

  17. 삽입 정렬 (7/8) 간접 정렬 IST (Information Sciences & Technology) Laboratory

  18. 삽입 정렬 (8/8) 일반화된 함수 작성 IST (Information Sciences & Technology) Laboratory

  19. 거품 정렬 (1/7) SORTI NG → S와O를 비교하고 교환 OSRTING→ S와R를 비교하고 교환 ORSTING→ S와T를 비교 ORSTING→ T와I를 비교하고 교환 ORS ITNG→T와N을 비교하고 교환 ORSINTG→ T와G를 비교하고 교환 O RSINGT→ 최대값 T가 제일 뒤에 옴 거품 정렬 알고리즘 1.i = 0;2.i가 n-1이 되면 끝낸다.3.j = 1;4.j가 n-i가 되면 7로 간다.5. a[j-1] > a[j]이면 두 값을 교환한다.6. j를 하나 증가시키고 4로 돌아간다.7. i를 하나 증가시키고 2로 돌아간다.j가 n-i까지만 반복하는 것은 n-i이후는 이미 최대값들로 정렬된 상태이기 때문이다. • 거품 정렬 • 배열의 인접 요소를 비교, 교환 하는 정렬 • 시간 복잡도가 O(N2)로 정렬알고리즘에서 가장 느림 • 코드가 단순하기 때문에 사용. • 거품정렬의 전략 • 대충 정렬 • 최대값을 배열의 제일 뒤로 보냄 IST (Information Sciences & Technology) Laboratory

  20. 거품 정렬 (2/7) • 거품 정렬의 실제 • 인접한 요소의 교환을 통해 대충 정렬을 하면서 최대값을 뒤로 옮기기 때문에 정렬의 전 과정을 하지 않아도 이미 정렬 되어 있는 경우가 많음 • 안정성이 있음 IST (Information Sciences & Technology) Laboratory

  21. 거품 정렬 (3/7) 하늘색: 그 단계 최대값 ( 옮겨진 키 ) 안정성이 있음 IST (Information Sciences & Technology) Laboratory

  22. 거품 정렬 (4/7) C로구현한 거품 정렬 IST (Information Sciences & Technology) Laboratory

  23. 거품 정렬 (5/7) • 거품 정렬의 분석 • 최선의 경우 : 정렬된 배열( N*(N-1)/2번 비교, 교환 없음 ) 선택정렬의 비교문은min>a[j],거품 정렬의 비교문은a[j-1]>a[j]이기 때문에 따라서 이 배열을 참조하는 것보다 일반 변수를 참조 하는 것이 더 효율적임 • 최악의 경우 : 역순 배열( N*(N-1)/2번 비교, N*(N-1)/2번 교환 ) • 결론 1. 최대값을 찾기, 대충 정렬하기 두 가지 일을 하기 때문에 실행 시간이 느림 2. 거품정렬은 모든 경우에 있어 고르게 속도가 느리기 때문에 실제 프로그래밍에서 거품 정렬은 거의 사용이 배제됨 3. O(N2)의 성능 IST (Information Sciences & Technology) Laboratory

  24. 거품 정렬 (6/7) [ 개선된 거품정렬의 실행시간 ] 정렬된 배열 : 시간이 거의 걸리지 않음 다른 경우의 배열 : 시간이 더 느려짐 → 몇 가지 문장이 추가됨으로서 얼마나 실행시간에 영향을 주는지 알 수 있음 거품 정렬의 개선 IST (Information Sciences & Technology) Laboratory

  25. 거품 정렬 (7/7) 일반화된 함수 작성 IST (Information Sciences & Technology) Laboratory

  26. E N D임지희ambomis@kunsan.ac.kr

More Related