Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- net::R_SSL_PROTOCOL_ERROR
- 로현 청춘의개발
- 자바스크립트 null 병합
- 자바스크립트 논리합 연산자
- ios 크로스브라우징
- React Query
- Kafka
- but requested an insecure XMLHttpRequest endpoint 'http://~~’. This request has been blocked; the content must be served over HTTPS.
- 퍼듀대학교
- K-SW SQUARE
- 자바스크립트 옵셔널 체이닝
- Purdue university
- 리액트 쿼리
- 자바스크립트
- AWS 로드밸런서
- 자바스
- refetchOnWindowFocus
- activeElement
- 사파리 가상키보드
- 리액트 가상키보드
- 자바스크립트 렉시컬스코프
- 자바스크립트 스코프 체인
- 자바스크립트 호이스팅
- 모던 자바스크립트 Deep Dive
- EC2 HTTPS로 연결
- touchmove 이벤트
- 자바스크립트 변수 호이스팅
- active blur
- 자바스크립트 중첩함수
- 모두의시간
Archives
- Today
- Total
개발 여행자, 현
[정렬 알고리즘] 선택정렬 본문
선택정렬
- 선택 정렬이란, N-1번부터 1번까지의 자리에 대하여 해당 자리에 넣어야 하는 원소를 선택하는 알고리즘이다.
- 오름차순으로 정렬한다면, N-1번부터 1번까지의 자리에는 남아있는 수들 중 가장 큰 수를 선택하여 넣어야 한한다.
예를 들어보자.
이 배열에서 오름차순으로 정렬을 하고자 한다.
선택정렬이란 idx라는 임의의 변수에다가 제일 작은 숫자의 인덱스를 저장하면서
맨 앞 자리부터 작은 숫자로 채워나가는 정렬 방법이다.
idx는 우선 인덱스 0으로 초기화를 해놓고 이중 for문을 돌면서 arr[j] < arr[idx] 를 비교한다.
그렇게 되면 한 바퀴를 돌았을 때 즉 for 문이 끝났을 때는 idx에 가장 작은 값의 인덱스가 저장된다.
해당 인덱스에 위치한 값이 i가 가리키는 위치서부터 배열의 끝에 있는 값 중 가장 작은 값이 저장되는 것이다.
그 후 arr[i]에 arr[idx] 값을 넣어주고 arr[idx] 값에 arr[i] 값을 넣어주면 된다.
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length; i++) {
let minIdx = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
let prevItem = arr[i];
arr[i] = arr[minIdx];
arr[minIdx] = prevItem;
}
return answer;
}
let arr = [13, 5, 11, 7, 23, 15];
console.log(solution(arr));
선택정렬을 이용하여 [13, 5, 11, 7, 23, 15] 배열을 오름차순으로 정렬했다.
시간복잡도는 2중 for문을 사용했기에 O(n) = n^2 이다.
결과는 다음과 같이 잘 나오는 것을 확인할 수 있다.
'알고리즘' 카테고리의 다른 글
[정렬 알고리즘] 버블정렬 (0) | 2023.04.17 |
---|---|
[JavaScript] 프로그래머스 게임 맵 최단거리 (BFS) (1) | 2022.11.14 |
[JavaScript] 프로그래머스 타겟넘버 (DFS, 재귀함수) (0) | 2022.11.14 |
[JavaScript] 너비우선탐색(BFS) 깊이우선탐색(DFS)이란? (0) | 2022.11.06 |
[프로그래머스/JavaScript] K번째 수 (feat. 나의 첫번째 알고리즘 문제) (0) | 2021.10.16 |