자료구조 6

Hash Table이란?

객체는 Hash Table이라는 자료구조의 종류 중 하나이다. Hash Table은 Key 와 Value가 쌍을 이룬 형태로 데이터가 저장되어 있는 자료구조형을 지칭한다. - 배열 내 데이터도 Key 와 Value로 이뤄져 있으나, 배열에서는 Key가 오직 index, 즉 숫자만 가능한것에 비해 Hash Table에서는 문자열 또한 Key가 될 수 있다. 해시 테이블 작업별 시간복잡도 search O(1) lookup O(1) insert O(1) delete O(1) 장점 : 빠르다. 탐색, 삽입, 삭제, 중복 데이터를 찾아내기 쉽다. 단점 : 저장할 공간은 많은데 들어올 메모리가 적을 때 효율적이지 않고, 저장할 때 순서가 없다. 또 O(1)의 일정 시간이 길면 모두 시간이 오래 걸린다. 해시 함수(..

자료구조 2021.10.19

Linked List란? (+ 자료구조란?)

자료구조는 데이터의 표현 및 저장 방법을 의미한다. 아록리즘은 그 저장된 데이터를 처리하는 과정이다. 즉, 자료구조를 알아야 알고리즘을 배울 수 있다. 특히 배열이 자료구조 중 하나이다. 자료구조에는 연결리스트, 스택, 큐 등이 있는데 자바스크립트의 배열은 이 모든 것을 표현할 수 있다. 연결 리스트(linked-list)란? 링크 목록이란 뜻, 각 데이터들을 한 줄로 연결시킨 모양을 띄우고 있는 자료구조이다. 연결 리스트에서 데이터와 링크를 가지고 있는 박스를 (크기가 동적인 자료구조로 자료구조를 구성하는 요소) 노드라고 한다. 노드는 데이터만 가지고 있을 수도, 링크만 가지고 있을 수도 없다. 무조건 노드는 데이터 + 링크를 가지고 있어야 한다. 위 사진에서와 같이 노드의 링크는 다음 데이터를 가리키..

자료구조 2021.10.17

스택과 큐에 대해서

class Stack { constructor() { this._arr = []; } push(item) { this._arr.push(item); } pop() { return this._arr.pop(); } peek() { return this._arr[this._arr.length - 1]; } } const stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); console.log(stack.peek()); console.log(stack.pop()); 스택과 큐에 대해서 선형구조란 Linear Structure 선형구조는 데이터들이 일렬로 저장되어 있는 형태를 가진다 일렬로 저장하는 방식은 리스트와 각 데이터가 다음 데이터의 위치..

자료구조 2021.10.14

알고리즘 - 병합 정렬(Merge sort)이란?

병합 정렬 알고리즘의 개념 - 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법 - 병합 정렬은 3 단계를 거친다. 1. 분할 : 입력 배열을 같은 크기의 2개의 부분 배열로 분할한다. 2. 정복 : 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 방법을 적용한다. 3. 결합 : 정렬된 부분 배열들을 하나의 배열에 합병한다. 즉, 데이터가 하나 남을 때까지 반복한다. 그 후에 하나씩 쪼개진 데이터졍렬을 하면서 다시 그룹화를 한다. 시간 복잡도는 O(n log2n)이다. 좋을 때나 나쁠 때나 속도는 같다. 하지만 단점으로는 메모리 공간이 필요하기..

자료구조 2021.10.11

선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬

1. 선택 정렬(sort) 알고리즘 효율성 차이를 극명하게 보여주는 것이 없다. 1. 비효율적인 알고리즘 let arr = [1, 10, 5, 6, 7, 8, 2, 3, 9, 4]; //어떻게 하면 가장 작은 값을 맨 앞으로 보낼 수 있을까? //알고리즘은 구체적으로 명시해줘야 한다. //가장 작은 것을 선택해서 제일 앞으로 보내면 어떨까? //효율성은 낮으나 구현하기 쉽다 let index = 0; for (let i = 0; i arr[j]) { minValue = arr[j]; index = j; } }..

자료구조 2021.10.06

Big-O 알고리즘이란?

알고리즘이란 1) 어떤 목적을 달성하거나 결과물을 만들어내기 위해 거쳐야 하는 일련의 과정들을 의미한다. 2) 가는 루트는 다양하며 여러가지 상황에 따른 알고리즘은 모두 다른다. 따라서 시간 복잡도가 가장 낮은 알고리즘을 선택하여 사용한다. 알고리즘의 실행시간은 컴퓨터가 알고리즘 코드를 실행하는 속도에 의존한다. 이 속도는 컴퓨터의 처리속도, 사용된 언어종류, 컴파일러의 속도에 달려있다. 알고리즘의 실행시간을 두 부분으로 나누면 1) 입력값의 크기에 따라 알고리즘의 실행시간을 검증해 볼 수 있다. 2) 입력값의 크기에 따른 함수의 증가량(성장률)이라 하는데, 중요하지 않는 상수와 계수들을 제거하면 알고리즘의 실행시간에서 중요한 성장률에 집중할 수 있는데 이것을 점금적 표기법(Asymptotic notat..

자료구조 2021.09.29
반응형