Name | Best | Avg | Worst | Run-time(정수 60,000개) 단위: sec |
---|---|---|---|---|
삽입 정렬 | n | n(2) | n(2) | 7.43 |
선택 정렬 | n(2) | n(2) | n(2) | 10.84 |
버블 정렬 | n(2) | n(2) | n(2) | 22.89 |
셀 정렬 | n | n(1.5) | n(2) | 0.056 |
퀵 정렬 | nlog2n | nlog2n | n(2) | 0.014 |
힙 정렬 | nlog2n | nlog2n | nlog2n | 0.034 |
병합 정렬 | nlog2n | nlog2n | nlog2n | 0.026 |
출처: https://im-developer.tistory.com/133 [Code Playground]
const insertionSort = (array) => {
var i = 1, j, temp;
for (i; i < array.length; i++) {
temp = array[i]; // 새로운 숫자를 선택
for (j = i - 1; j >= 0 && temp < array[j]; j--) {
// 선택한 숫자를 이미 정렬된 숫자들과 비교 -> 넣을 위치 체크,
// 선택한 숫자가 정렬된 숫자보다 작으면
array[j + 1] = array[j]; // 한 칸씩 뒤로 밀어냄
}
array[j + 1] = temp; // 마지막 빈 칸에 선택한 숫자넣음
}
return array;
};
insertionSort([5, 6, 1, 2, 4, 3]); // [1, 2, 3, 4, 5, 6]
const selectSort = (array) => {
for (let i = 0; i < array.length - 1; i++) {
for (let j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) [array[i], array[j]] = [array[j], array[i]];
}
}
return array;
};
const array = [1, 13, 5, 24, 94, 26, 223, 36, 45, 29];
console.log(selectSort(array)); // [1, 5, 13, 24, 26, 29, 36, 45, 94, 223]
const bubbleSort = (data) => {
for (let i = 0; i < data.length - 1; i++) {
let swap = false; // 변화 여부 체크
for (let j = 0; j < data.length - i - 1; j++) {
if (data[j] > data[j + 1]) {
[data[j], data[j + 1]] = [data[j + 1], data[j]]; // swap
swap = true;
}
}
if (!swap) break;
}
return data;
};
const data = [10, 73, 45, 34, 2, 32, 62, 1, 25, 6, 91];
console.log(bubbleSort(data)); // [1, 2, 6, 10, 25, 32, 34, 45, 62, 73, 91]