
개인적으로 가장 직관적이고 구현하기 쉬운방법 인것같다
반복문이 돌때마다 최솟값을 찾아서 해당 index에 배치하면 된다
버블 정렬과 비슷하지만 교환이 일어나는 횟수는 버블정렬에 비해 적다
시간복잡도는 O(N^2)으로 10개의 배열의 경우 첫번째 배열에서 9개의 원소를 탐색
그다음은 8개 .. 7개.. 이런식으로 최악의 경우와 최선의 경우 상관없이
n-1 + n-2 + ... + 1 이런식이며
n(n-1)/2으로 시간복잡도는 O(N^2)이다.
#include <iostream> using namespace std; int main() { int arr[] = { 6,9,8,1,3,4,2,5,7 }; int arrSize = sizeof(arr) / sizeof(int); int tmp; for (int i = 0; i < arrSize - 1; i++) { int min = i; for (int j = i + 1; j < arrSize; j++) { if (arr[min] > arr[j]) { min = j; } } tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } for (int i = 0; i < arrSize; i++) { cout << arr[i] << " "; } }
'algorithm' 카테고리의 다른 글
병합정렬 (Merge Sort) (0) | 2021.09.24 |
---|---|
기수정렬 (Radix sort) (0) | 2021.09.15 |
알고리즘의 복잡도 (0) | 2021.09.15 |
삽입 정렬(Insertion Sort) (0) | 2021.09.07 |
버블정렬(Bubble Sort) (0) | 2021.09.07 |
댓글