본문 바로가기
C

선택정렬 & 버블정렬

by stdlib.h 2016. 3. 28.

 선택정렬은  정렬되지 않은 전체 자료 중에서 해당 위치에 맞는 자료를 선택하여 위치를 교환하는 정렬 방식이다.


오름차순으로 정렬하기위해선 다음과 같은 코드가 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
int main(void)
{
 
    int i, j;
    int min, temp;
    int arr[10= {945 ,3 , 176280};
    for(i=0;i<(sizeof(arr)/4)-1;i++)
    {
        min=i;
        for(j=i+1;j<(sizeof(arr)/4);j++)
        {
            if(arr[min]>arr[j])
            { 
                min=j;
            }
        }    
        temp = arr[i];arr[i] = arr[min];
        arr[min] = temp;
    }
}
 
cs


첫 for문에서 -1을 한이유는, 마지막값까지 비교할 필요가 없기 때문이다.




버블정렬은 인접한 원소를 비교하여 정렬하는 방식이다.


복잡도는 느리지만 코드가 단순해서 편리하다.


구현은 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int main(void)
{
    int i, j;
    int temp;
    int arr[10= { 12345678910};
    for (i = 0; i<10; i++)
    {
        for (j = 0; j<9; j++)
        {
            if (arr[j + 1]<arr[j])
            {
                temp = arr[i];
                arr[i] = arr[j + 1];
                arr[j + 1= temp;
            }
        }
    }
    for (i = 0; i < 10; i++)
        printf("%d\n", arr[i]);
}
 
cs


'C' 카테고리의 다른 글

2차원배열  (0) 2016.03.28
이진탐색  (0) 2016.03.28
문자열  (0) 2016.03.28
과제  (0) 2016.03.28
배열 array  (0) 2016.03.28