버블 정렬
시간 복잡도: O(n2)
공간 복잡도: O(1)
const swap = (arr, index, nextIndex) => {
[arr[index], arr[nextIndex]] = [arr[nextIndex], arr[index]]
}
const bubbleSort = (arr) => {
for (let i = arr.length; i >= 0; i--) {
let noSwap = true
for (let j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1)
noSwap = false
}
}
if (noSwap) break
}
return arr
}
선택 정렬
시간 복잡도: O(n2)
공간 복잡도: O(1)
const swap = (arr, index, nextIndex) => {
[arr[index], arr[nextIndex]] = [arr[nextIndex], arr[index]]
}
const selectionSort = (arr) => {
for (let i = 0; i < arr.length - 1; i++) {
let lowest = i
for (let j = i + 1; j < arr.length; j++) {
if (arr[lowest] > arr[j]) {
lowest = j
}
}
if (i !== lowest) {
swap(arr, i, lowest)
}
}
return arr
}
삽입 정렬
시간 복잡도: O(n2)
공간 복잡도: O(1)
const insertionSort = (arr) => {
for (let i = 1; i < arr.length; i++) {
console.log(arr)
let currentValue = arr[i]
for (let j = i - 1; j >= 0 && arr[j] > currentValue; j--) {
arr[j + 1] = arr[j]
arr[j] = currentValue
}
}
return arr
}
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
javascript. Merge Sorting (0) | 2020.09.13 |
---|---|
Problem Solving Approach (0) | 2020.07.09 |
자바스크립트. 문자 세기 (0) | 2020.07.08 |
자바스크립트. 정렬 순서 (0) | 2020.07.04 |
자바스크립트. for 반복문 수행시간 비교 (0) | 2020.07.04 |