반응형
선택정렬을 구현하면 다음과 같다.
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 |