선택정렬
해결할문제–n개의요소로구성된배열A를정렬하자 §초기:A–Loop A의카운터i에0을대입 §Loop A( i <n-1) //safe location A,Loop invariant : A[0]~A[i-1] must befinded seat § temp에i를대입 § 초기:B- Loop_B의카운터j에i+1를대입 § Loop B (j<n) //safe location B,Loop invariant: temp is mimimum within A[i] toA[j] § if(A[temp]>A[j]) § temp assign j § j assign j+1 § swap A[i],A[temp] § i assign i+1
수행 속도 n개의 자료 중 최소값 찾기 - 루프 B 수행 속도 T'(n) T'(n) = n-1 번 비교 선택 정렬 - 전체 수행 속도: T(n) T(n) = T'(n)+T'(n-1)+T'(n-2)+...+T'(1) = (n-1) + (n-2) + ( n-3) + ... + 0 = 1/2N*N + 1/2 ==> O(N*N)
예: Array: 27 8 12 15 23 9 6 25 17 1: 6 8 12 15 23 9 27 25 17 2: 6 8 12 15 23 9 27 25 17 2-a: 6 8 12 15 23 9 27 25 17 i j min 2-b: 6 8 12 15 23 9 27 25 17 i j min 2-c: 6 8 12 15 23 9 27 25 17 i j min 2-d: 6 8 12 15 23 9 27 25 17 i j min 2-e: 6 8 12 15 23 9 27 25 17 i j min 2-f: 6 8 12 15 23 9 27 25 17 i j min 3: 6 8 9 15 23 12 27 25 17 .......................................................... end: 6 8 9 12 15 17 23 25 27
|
예제 코드및 실행결과
#include <stdio.h> void Swap(int *a,int *b) int *FindMin(int *base,int now) for( ; i<now ; i++) void SelectSort(int *base,int asize) for(i = 0; i<asize;i++) } void main() printf("Sorting전");
printf("Sorting후"); } |
댓글