ALGORITHM/정렬
Algorithm / 정렬 / Radix Sort (기수 정렬)
기수 정렬 // 뒤에서 idx 번째 자릿수를 얻는 함수 function getDigit(num, idx) { // return Math.floor(Math.abs(num) / Math.pow(10, i)) % 10; return Number(String(num).at(-(idx + 1))) || 0; } // 숫자의 자릿수가 몇인지 return 하는 함수 function digitCount(num) { if (num === 0) return 1; // return Math.floor(Math.log10(Math.abs(num))) + 1; return String(num).length; } // 가장 큰 자릿수를 찾는 함수 function mostDigit(nums) { let max = 0; for (..
Algorithm / 정렬 / Quick Sort (퀵 정렬)
퀵 정렬 function quickSort1(arr) { if (arr.length { [array[i], array[j]] = [array[j], array[i]]; }; let pivot = arr[start]; let swap_idx = start; // 마지막에 위치해야 할 인덱스 for (let i = start + 1; i arr[i]) { swap_idx++; swap(arr, swap_idx, i); } } swap(arr, start, swap_idx); return swap_idx; } function quickSort2(arr, left = 0, right = arr.length - 1) { if (left < right) {..
Algorithm / 정렬 / Merge Sort (합병 정렬)
합병 정렬 function merge(left_arr, right_arr) { let result = []; let [i, j] = [0, 0]; while (i < left_arr.length && j < right_arr.length) { if (left_arr[i] < right_arr[j]) { result.push(left_arr[i]); i++; } else { result.push(right_arr[j]); j++; } } while (i < left_arr.length) { result.push(left_arr[i]); i++; } while (j < right_arr.length) { result.push(right_arr[j]); j++; } return result; } functio..
Algorithm / 정렬 / Insertion Sort (삽입 정렬)
삽입 정렬 function insertion_sort(arr) { console.log(`Before insertion sorting: ${[...arr]}`); let cnt = 0; for (var i = 1; i = 0 && arr[j] > cur; j--) { if (cur < arr[j]) arr[j + 1] = arr[j]; cnt++; } arr[j + 1] = cur; } console.log(`After insertion sorting: ${[...arr]}`); console.log(`Sorting count = ${cnt}`); } let arr = [3, 6, 13, 4..
Algorithm / 정렬 / Selection Sort (선택 정렬)
Selection Sort (선택 정렬) function selection_sort1(arr) { console.log(`before selection sorting: ${[...arr]}`); let cnt = 0; for (let i = 0; i < arr.length; i++) { let smaller_idx = i; for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[smaller_idx]) { smaller_idx = j; } } // swap [arr[i], arr[smaller_idx]] = [arr[smaller_idx], arr[i]]; cnt++; } console.log(`after selection sorting: ${[...a..
Algorithm / 정렬 / Bubble Sort (버블 정렬)
버블 정렬 (Bubble Sort) // Sinking Sort 라고도 하는데, // 버블정렬과 방법은 같지만 내림차순으로 정렬한다. function bubble_sort1(arr) { console.log(`before bubble sorting: ${[...arr]}`); let cnt = 0; for (let i = 0; i arr[j + 1]) { let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } ..