선택정렬(SelectionSort)
알고리즘의 복잡도는 O(n^2)
버블정렬과 비슷하지만 자료의 이동이 보다 적어 선택정렬이 효율이 좋다.
동작원리
- 배열의 첫원소를 key 값으로 설정하고 나머지 배열원소 중 가장 작은 원소를 찾아 교체한다.
- 교체후에 첫 원소를 제외한 두번째 원소를 키값으로 나머지 배열중 가장 작은 원소 값을 찾아 교체한다.
- 이러한 방식으로 마지막 까지 교체를 한다면 정렬이 완료됨
소스
- #include<stdio.h>
- int main(void)
- {
- int arr[5] = {5,4,3,1,2};
- int tmp = 0;
- int tmp2 = 0;
- int key = 0;
- int keyin = 0;
- int dis = 0;
- int ch = 0;
- for(dis = 0; dis<5;dis++)
- {
- }
- for(tmp = 0;tmp<5;tmp++)
- {
- key = arr[tmp];
- for(tmp2 = tmp+1; tmp2 < 5 ; tmp2++)
- {
- if(arr[tmp2] < key)
- {
- key = arr[tmp2];
- keyin = tmp2;
- ch = 1;
- }
- }
- if(ch == 1)
- {
- arr[keyin] = arr[tmp];
- arr[tmp] = key;
- }
- ch = 0;
- }
- for(dis = 0; dis<5;dis++)
- {
- }
- return 0;
- }
결과
'c언어(알고리즘)' 카테고리의 다른 글
스택(Stacks) - 배열로 구현(The implementation with the array) (0) | 2016.11.01 |
---|---|
힙 정렬 (Heap-Sort) (0) | 2016.11.01 |
퀵 정렬(Quick-Sort) (0) | 2016.11.01 |
삽입정렬(Insertion-Sort) (0) | 2016.11.01 |
병합 정렬(Merge-Sort) (0) | 2016.10.17 |