티스토리 뷰
선택 정렬이란?
선택 정렬(Selection Sort)은 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 방식입니다.
제자리 정렬 알고리즘 중의 하나로, 나열된 것 중에 가장 작은 혹은 큰 것을 선택해 앞 또는 끝으로 보내는 작업을 반복하면 크기 순서대로 정렬이 됩니다.
쉽게 다음 과정을 기억하면 될 것 같습니다!
1. 앞 (처음 인덱스) 부터 값을 하나 선택합니다.
2. 선택한 값의 이후에 있는 원소들 중 가장 작은 값을 찾습니다.
3. 찾은 인덱스와 1번에서 선택한 인덱스를 바꿔줍니다.
이제 시간복잡도를 구해보겠습니다. (빅오 표기법을 사용합니다.)
데이터의 개수가 n개 라고 했을 때,
첫 루프에서의 비교횟수는 1 ~ n - 1 => n-1이 될 것 이고,
두번째 루프에서의 비교횟수는 2 ~ n - 1 => n-2가 될 것 입니다.
이런 식으로 작업이 반복되다 보면
(n - 1) + (n - 2) + (n - 3) + ..... + 2 + 1 => n(n - 1) / 2
즉, O(n^2)의 시간복잡도를 가지게 됩니다.
자 이제, 코드로 표현해보도록 하겠습니다. (언어는 JS 입니다.)
지금까지 선택정렬(Selection Sort)를 알아보았습니다.
혹시 궁금한 점이나 수정사항이 있으면 바로 말씀해주세요.
감사합니다!
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- devDependencies
- hoc test
- reducer test
- jest react test
- infinite-scrolling
- 효율적인 디버깅
- js debugger
- jest reducer test
- void 0
- react hoc 테스트
- 크롬 퍼포먼스 탭
- vue.js
- react-testing-library
- react-waypoint
- tsconfig.json
- dependencies
- ES6 Module
- codility
- infinite-scrolling 구현
- jest reducer 테스트
- redux-mock-store
- react-infinite-scroll
- difference_1.default is not a function
- esModuleInterop
- NPM
- axios
- Package
- ES2020
- react-hooks test
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
글 보관함