-
Selection Sort (선택정렬)DEV/🤦 ALGORITHM 2021. 3. 19. 16:40

정렬(Sort) 은 알고리즘 효율을 높일 수 있는 핵심이다.
처음 기초적인 정렬인 선택정렬에 대해 알아보자.

Q . 오름차순으로 정렬하는 프로그램을 작성하시오.
1, 10, 5, 8, 7, 6, 4, 3, 2, 9
A . 가장 작은 것을 선택해서 제일 앞으로 보내자.
1, 10, 5, 8, 7, 6, 4, 3, 2, 9
1, 10, 5, 8, 7, 6, 4, 3, 2, 9
1, 2, 5, 8, 7, 6, 4, 3, 10, 9
1, 2, 3, 8, 7, 6, 4, 5, 10, 9
.
.
.
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

https://en.wikipedia.org/wiki/Selection_sort Python 구현
def selection_sort(arr): for i in range(len(arr) - 1): min_idx = i #0~9 for j in range(i + 1, len(arr)): #1~10까지 if arr[j] < arr[min_idx]: #a의 2번째 값이 a의 1번째값보다 작을때, min_idx = j #1 arr[i], arr[min_idx] = arr[min_idx], arr[i] #자리바꿈 a = [1, 10, 5, 8, 7, 6, 4, 3, 2, 9] selection_sort(a) print(a)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]시간복잡도 계산
그러나 선택정렬은 시간을 너~~무 잡아먹는다.
비교를 10번, 9번, 8번, 7번 ... 1번을 하게된다..
10 * (10+1) /2 = 55번을 하게 되는 것이다.
Python 구현
등차수열 n (n+1) /2 -> O(N*N) -> O(N^2) '빅오표기법'으로 이렇게 표현한다.
결국 선택정렬의 복잡도는 O(N^2)이다.
Y = X^2 을 생각하면 된다.

결론 :
데이터 수가 늘어날수록 데이터 처리 또한 갈수록 높아져서 효율적인 알고리즘은 아님.
'코딩 > 🤦 ALGORITHM' 카테고리의 다른 글
[TEST] Frog Possible Distance (0) 2022.02.16 [BFS] 너비우선탐색 (Breath-First Search) (0) 2022.02.10 [DFS] 깊이탐색알고리즘(Depth-First Search) (0) 2022.02.10 [DFS / BFS] 스택자료구조, 큐자료구조, 재귀함수 (0) 2022.02.08 알고리즘 성능평가 (0) 2021.09.19
