분류 전체보기 90

Radix Sort (기수 정렬)

Radix Sort(기수정렬) -> 다른 정렬알고리즘 처럼 두 수의 크기로 비교하는 것이 아니라, 자릿수로 비교하는 알고리즘 (버킷을 사용) (1000 과 12323 를 비교했을때 1000은 4자리, 12323은 5자리 숫자 인 것으로 비교) 10진수니깐 버킷을 10개 (0~9 버킷) 으로 시작한다. // number의 idx(자릿수)에 해당하는 숫자를 리턴 function getDigit(number, idx) { /** * Math.floor : 내림 * Math.abs : 절대값 반환 : number가 음수인 경우일 때를 대비 * Math.pow : 거듭제곱 */ return Math.floor(Math.abs(number) / Math.pow(10, idx)) % 10; } // 자릿수가 몇인지 ..

Algorithm 2022.08.20

Quick Sort (퀵 정렬)

Quick Sort 란? 하나의 배열을 피벗(pivot)을 기준으로 두 개의 배열로 분할하고,(피벗을 기준으로 큰건 오른쪽, 작은건 왼쪽) 분할된 배열을 정렬한 다음, 정렬된 두 배열을 합하여 전체가 정렬된 배열이 되게 하는 정렬 알고리즘. // 배열의 첫번째값을 기준(pivot)으로 잡고 왼쪽은 pivot보다 작은거, 오른쪽은 pivot보다 큰걸로 정렬 function pivot(arr, sidx = 0, eidx = arr.length - 1) { let pivot = arr[sidx]; let swapIdx = sidx; for (let i = sidx + 1; i arr[i]) { swapIdx++; swap(arr, swapIdx, i); } } swap(arr, swapIdx, sidx);..

Algorithm 2022.08.14

Merge Sort (합병 정렬)

합병 정렬이란 배열의 길이가 0 또는 1이 될때 까지 나누고 (배열의 길이가 0 또는 1이면 이미 정렬된 것으로 봄) 나눠진 배열을 다시 합병하면서 정렬하는 것이다. 같은 색깔끼리 같은 하나의 정렬된 배열 구현 방법 1. merge 하는 함수 작성 function merge(arr1, arr2) { const mergedArr = []; let i = 0; let j = 0; while (i arr2[j]) { mergedArr.push(arr2[j]); j++; } else { mergedArr.push(..

Algorithm 2022.08.07

Insertion Sort (삽입 정렬)

Insertion Sort란 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 배열을 정렬한다. function swap(arr, idx1, idx2) { let temp = arr[idx1]; arr[idx1] = arr[idx2]; arr[idx2] = temp; } // insertionSort가 아니라 이상하게 bubble sort처럼? 해버림 // function insertionSort(arr) { // for (let i = 1; i 0; j--) { // if (arr[j] < arr[j - 1]) { // swap(arr, j, j - 1); // } // } // } //..

Algorithm 2022.08.07

정렬 알고리즘 소개

정렬 알고리즘이란? Collection의 항목을 재배열하는 과정 15개의 정렬 알고리즘 영상 (소리 주의!) https://www.youtube.com/watch?v=kPRA0W1kECg 정렬 알고리즘을 배워야 하는 이유 1. 정렬이 프로그래밍에서 흔하게 사용되기 때문. 2. 몇몇 알고리즘이 객관적으로 나머지보다 빠르기는 하지만, 특정 상황에서는 어떤 알고리즘이 더 빠르기 때문. 3. 정렬은 전형적인 면접 주제 정렬 알고리즘 애니메이션 (삽입, 선택, 버블, 셸, 합병, 힙, 퀵) https://www.toptal.com/developers/sorting-algorithms Sorting Algorithms Animations Animation, code, analysis, and discussion o..

Algorithm 2022.08.06

Binary Search

Binary Search(이진 탐색)은 정렬된 배열에서만 효과가 좋고, 분류되지 않았을때는 쓸모가 없다. console.log(binarySearch([1, 2, 3, 4, 5], 2)); // 1 console.log(binarySearch([1, 2, 3, 4, 5], 3)); // 2 console.log(binarySearch([1, 2, 3, 4, 5], 5)); // 4 console.log(binarySearch([1, 2, 3, 4, 5], 6)); // -1 console.log(binarySearch([5, 6, 10, 13, 14, 18, 30, 34, 35, 37, 40, 44, 64, 79, 84, 86, 95, 96, 98, 99], 10)); // 2 console.log(bi..

Algorithm 2022.07.31