⭐️ CS & Algorithm/Algorithm
[JavaScript] 정렬 알고리즘 - 버블 정렬, 선택 정렬, 삽입 정렬
개발자 올라프
2022. 11. 30. 01:46
개요
JavaScript는 기본적으로 Array.prototype.sort()
메서드가 존재해서 정렬 알고리즘을 사용할 필요가 없지만, 메서드에 의존하기 보다는 컴퓨팅 사고를 통해서 정렬하는 방법을 알아보고자 한다. 해당 정렬을 프로그래머스 Lv0. 중앙값 구하기 문제에 적용하고자 한다.
GitHub - cham-min/Algorithm: 알고리즘 공부 저장소
알고리즘 공부 저장소. Contribute to cham-min/Algorithm development by creating an account on GitHub.
github.com
1. 버블 정렬 (Bubble sort)
가장 큰 값이 거품처럼 위로 올라가는 모양을 띄는 알고리즘이다.
const bubbleSort = (arr) => {
for(let i = arr.length ; i > 0 ; i--){
for(let j = 0 ; j < i - 1 ; j++){
if(arr[j] > arr[j + 1]){
// [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
2. 선택 정렬(Selection sort)
가장 작은 값을 탐색 후, 정렬되지 않은 가장 앞 인덱스에 위치한 값과 교체하는 알고리즘이다.
const selectionSort = (arr) => {
for(let i = 0 ; i < arr.length; i++){
let min = i;
for(let j = i + 1 ; j < arr.length; j++){
if(arr[j] < arr[min]) min = j;
}
// [arr[i], arr[min]] = [arr[min], arr[i]];
let temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
return arr;
}
3. 삽입 정렬(Insertion sort)
아직 정렬되지 않은 데이터를 이미 앞서 정렬된 값과 비교하여 자신의 위치를 찾아 삽입하는 알고리즘이다.
const insertionSort = (arr) => {
for(let i = 1; i < arr.length; i++){
let cur = arr[i];
let j = i - 1;
while(j >= 0 && arr[j] > cur){
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = cur;
}
return arr;
}
Ref