위와 같은 배열이 존재 했을 때,
- 먼저 index 0 부터 배열의 마지막 인덱스 까지 가장 적은 값(min)을 갖는 데이터를 찾는다.
- min 값과 배열의 첫번째 인덱스와 swap을 한다.
- 첫번째 인덱스는 가장 작은값이므로 두번째 인덱스부터 다시 탐색을 한다.
... 반복
[ 5 , 1 , 2 , 8 , 7 , 3 , 9 , 6 , 10 , 4 ]
[ 1 , 5 , 2 , 8 , 7 , 3 , 9 , 6 , 10 , 4 ]
[ 1 , 5 , 2 , 8 , 7 , 3 , 9 , 6 , 10 , 4 ]
[ 1 , 2 , 5 , 8 , 7 , 3 , 9 , 6 , 10 , 4 ]
[ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
from xmlrpc.client import MAXINT def solution(array): answer = [] min = MAXINT index = 0 for x in range(len(array)): min = MAXINT for y in range(x,len(array)): if min > array[y]: min,index = array[y],y array[x], array[index] = array[index], array[x] answer = array return answer
배열의 길이가 10일때,
1번째 min값을 찾기위해 10번 탐색
2번째 min값을 찾기위해 9번 탐색
...
10번째 min값을 찾기위해 1번 탐색
총 탐색 후 정렬 까지 10 + 9 + 8 + ... + 1 번 반복 되기때문에, 배열이 N일 경우,
= N * (N+1)/2
=> O(N^2)
해당 정렬은 O(N^2)의 시간 복잡도를 갖는다.
삽입정렬(Insertion Sort), 선택정렬(Selection Sort), 버블정렬(Buble Sort)가 존재한다.