250x250
Notice
Recent Posts
Recent Comments
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jsonwebtoken
- TypeScript
- findByIdAndDelete
- mongodb
- async
- await
- double quote
- https
- MYSQL
- Nodejs
- moment
- wil
- EC2
- Express
- AWS
- TailwindCSS
- certbot
- mongoose
- Find
- single quote
- til
- Node.js
- flutter
- clipBehavior
- RDS
- sequelize
- JavaScript
- atlas
- css
- nginx
Link
Archives
기억 휘발 방지소
선택정렬 (Selection Sort) 본문
728x90
반응형
📌 선택정렬 (Selection Sort)
주어진 리스트에서 가장 작은 값을 찾고 그 값을 맨 앞에 있는 값과 교체한다.
그리고 맨 처음 위치를 제외한 나머지 리스트를 같은 방법으로 교체하는 방법이다.
버블 정렬과 마찬가지로 O(n^2)의 시간복잡도를 갖는다.
👉 과정
[3, 4, 2, 5, 1]
최소값인 1과 3 swap
[1, 4, 2, 5, 3]
최소값 2와 4 swap
[1, 2, 4, 5, 3]
최소값 3과 4 swap
[1, 2, 3, 5, 4]
최소값 4와 5 swap
[1, 2, 3, 4, 5]
남은 숫자가 5 하나 남았기 때문에 자동으로 5가 최소값이 된다.
[1, 2, 3, 4, 5]
정렬 끝
👉 구현
def selection_sort(arr):
for i in range(len(arr)):
lowest = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[lowest]:
lowest = j
if i != lowest:
arr[i], arr[lowest] = arr[lowest], arr[i]
return arr
👉 swap 수를 적게
버블정렬은 두 수를 비교해서 루프가 끝날 때까지 스왑을 하지만 선택정렬은 최소값을 찾아 swap을 하기 때문에 루프당 1번의 swap으로 버블정렬보다는 더 적은 swap을 한다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
유클리드 알고리즘 (Euclidean Algorithm) (0) | 2022.09.07 |
---|---|
삽입정렬 (Insertion Sort) (0) | 2022.07.25 |
버블정렬 (Bubble Sort) (0) | 2022.07.25 |
진수변환 (0) | 2022.07.23 |
약수 구하기 (0) | 2022.07.22 |