본문 바로가기
  • soldonii's devlog

Javascript 공부123

자바스크립트 정렬 알고리즘 7 : 언제, 어떤 정렬 알고리즘을 사용해야 할까? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) # Insertion Sort(삽입 정렬) 1) dataset의 크기가 작을 때 2) dataset이 거의 정렬이 되어 있을 때 # Merge Sort(합병 정렬) 1) dataset이 아주 방대한 크기인데 내 컴퓨터 메모리의 외부에서 정렬을 수행할 수 있을 경우, Merge Sort의 유일한 단점인 공간복잡도 문제가 해결될 수 있으므로 사용하기에 최적인 상황이다. 2) dataset의 정확도가 의심되거나, 적절한 p.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 6 : Quick Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) Quick Sort는 Merge Sort보다 직접 구현하기가 더 복잡하다. Quick Sort 또한 Divide and Conquer 개념을 사용하고, 동시에 Pivoting 개념을 활용한다. Quick Sort는 공간복잡도가 O(log n)으로 Merge Sort의 O(n)보다 메모리 효율성이 높은 알고리즘이다. 하지만 주의할 점은, worst 케이스의 경우 시간복잡도가 O(n^2)가 될 수 있다는 점이다. 특히 어.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 5 : Merge Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 앞서 살펴본 Bubble Sort, Selection Sort, Insertion Sort는 시간복잡도가 O(n^2)가 되기 때문에 무척이나 비효율적인 정렬 알고리즘이었다.(특정 조건에서 Insertion Sort는 제외. 자세한 것은 이 글에서 확인할 수 있다.) Merge Sort는 Divide and Conquer 및 recursion을 활용하는 로직이며, 따라서 O(n^2)에서 더 개선된 O(n log n)의 .. 2019. 11. 4.
자바스크립트 정렬 알고리즘 4 : Insertion Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 앞서 배운 Bubble Sort, Selection Sort의 경우 사실 교육적 목적을 제외하면, 실무에서 사용할 일은 거의 없다고 한다. 그러나 Insertion Sort는 경우에 따라서 가장 빠른 속도를 낼 수 있기 때문에 정확히 알아둬야 한다. Insertion Sort(삽입 정렬)를 사용하는 상황은 아래 조건이 충족될 때이다. 아래 조건에서는 그 어떤 정렬 알고리즘보다 Insertion Sort가 가장 빠른 속.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 3 : Selection Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]; function selectionSort(array) { const length = array.length; for (let i = 0; i < length; i++) { let minIdx = i; let temp = array[i]; for (let k = i+1; k < length; k++) { if (arra.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 2 : Bubble Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) Bubble Sort, Insertion Sort, Selection Sort 이 세가지가 주요 정렬 알고리즘 중 가장 우선적으로 배울 정렬 알고리즘이다. Merge Sort와 Quick Sort는 앞선 세 개보다 조금 더 Advanced한, 복잡한 알고리즘이다. 뒤의 두 개는 앞선 세 개보다 더 효율적이다. Bubble Sort의 작동 방식을 보면, 가장 구현하기에 간단하기는 하지만 가장 비효율적인 정렬 알고리즘이다.. 2019. 11. 3.
자바스크립트 정렬 알고리즘 1 : 왜 정렬 알고리즘을 배워야 할까? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 정렬 알고리즘을 배워야 하는 이유 const letters = ['a', 'd', 'z', 'e', 'r', 'b']; const basket = [2, 65, 34, 2, 1, 7, 8]; basket.sort(); // [1, 2, 2, 34, 65, 7, 8] basket 배열에서 자바스크립트에 내장된 정렬 메소드를 사용할 경우, 우리가 원하는대로 정렬이 이루어지지 않는다. 왜 그럴까? 자바스크립트에 내장된.. 2019. 11. 3.
자바스크립트 알고리즘 : 재귀함수란? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 재귀 함수란? 재귀 함수는 알고리즘이라기 보다는 문제를 해결하기 위한 컨셉, 코딩 패턴에 더 가깝다. 앞으로 배울 sorting, searching의 경우에 재귀를 많이 사용하게 될 예정이다. 쉽게 말해 재귀 함수란, 특정 함수가 함수 안에서 자기 자신을 다시 호출하는 것을 의미한다. 반복적인 sub task가 있을 때 사용하면 좋다. 2. 재귀 함수의 3가지 원칙 1. Base Case를 명확히 작성한다. 2... 2019. 11. 1.
자바스크립트의 자료구조 6 : 그래프(Graphs) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 그래프(Graphs)란? 각 노드들이 서로 연결되어 있는 자료 구조형으로, 아주 커다란 자료 구조형의 범위 중 하나이다. 실제로 그래프 자료 구조 안에 Trees 자료구조가 포함되어 있고, Trees 안에는 Linked List가 포함되어 있다. 즉, 그래프는 이들을 모두 포괄하고 있는 자료 구조형인 것이다. 그래프 자료구조를 묘사하는 방식에는 크게 3가지 방식이 있다. # Directed vs. Undirect.. 2019. 11. 1.