반응형





선택정렬을 구현하면 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#define swap(a,b) {int tmp = a; a = b; b = tmp;}
 
using namespace std;
 
int main()
{    
    int n[10];
    
    for(int i = 0 ; i < 10 ; i ++cin >> n[i];
    
    for(int i = 0 ; i < 10 ; i ++)
    {
            int min = i;
            for(int j = i ; j < 10 ; j ++)
            {
                    if(n[min] > n[j])
                    {
                            min = j;
                    }
            }            
            swap(n[i],n[min]);
    }
    
    for(int i = 0 ; i < 10; i ++printf("%d ",n[i]);
 
    return 0;
}
Crocus




그렇다면 위 코드와 아래코드는 어떤 면에서 다른가?

아래코드는 위 코드에 비해 코드의 가독성이 좋지만, 같은 2중 for문일지라도 시간복잡도 면에서 밀리는 것을 볼 수 있다.

하지만 적은 값을 Sort할때는 좀 더 보기좋은  아래의 코드가 유용할 것 같다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#define swap(a,b) {int tmp = a; a = b; b = tmp;}
 
using namespace std;
 
int main()
{    
    int n[10];
    
    for(int i = 0 ; i < 10 ; i ++cin >> n[i];
    
    for(int i = 0 ; i < 10 ; i ++)
    {
            for(int j = i ; j < 10 ; j ++)
            {
                    if(n[i] > n[j])
                    swap(n[i],n[j]);
            }            
    }
    
    for(int i = 0 ; i < 10; i ++printf("%d ",n[i]);
 
    return 0;
}
 
Crocus










반응형

'Applied > 알고리즘' 카테고리의 다른 글

숫자의 각 자릿수 구하기 알고리즘  (10) 2016.07.23
단어 검색 알고리즘  (0) 2016.07.06
최댓값 최솟값 구하기  (0) 2016.03.25
재귀 함수  (0) 2015.11.27
빅-오 표기법(Big-Oh Notation)  (0) 2015.11.23