타입스크립트를 공부할겸 자료구조를 직접 구현해보고 정리하기 위해 velog를 작성해본다. LinkedList(연결리스트)란? 연결 리스트는 선형적인 데이터 구조라는 점에서 배열과 유사하다. 하지만 배열과 달리, 연결 리스트의 요소(elements)들은 연속적인 메
TypeScript로 구현된 Stack접시가 쌓여 있으면 맨 위에 있는 접시를 들어내 사용하고 새 접시는 맨 위에 쌓는다. 데이터를 이런 방식으로 쌓고 빼는 자료구조가 스택이다. 이 때문에 가장 뒤에 들어온 것이 가장 먼저 나가는 구조라는 뜻으로 LIFO(Last-In
Typescript로 구현된 Queue마트에서 계산하기 위해 줄을 서는 모습, 번호표를 뽑고 순서를 기다리는 모습 등은 일상 생활에서 흔히 볼 수 있는 모습이다. Queue는 이런 줄을 의미하는 단어이다. 데이터에도 큐 방식으로 넣고 빼는 자료 구조가 있는데 이 자료구
출처 : https://laboputer.github.io/ps/2017/10/06/priorityqueue/우선순위가 있는 대상을 관리해야 하는 경우가 많다. 예를들어 CPU나 다른 자원을 무겁게 사용하면서 며칠 동안 수행해야할 작업이 있다면 다른 작업들의
저장된 요소들을 특정 순서로 재배치하는 알고리즘입력 데이터는 보통 배열과 같은 데이터 구조흔히 사용하는 순서 : 숫자/사전순서(A-Z)정렬 방향 : 오름차순, 내림차순좀 더 효율적인 알고리즘을 사용하기 위해서사람이 읽기 편하게 하기 위해서선택 정렬(Selection S
전체 리스트에서 가장 작은 요소를 찾아 첫 번째 자리로 옮기고, 그 다음 작은 요소를 찾아 두 번째 자리로 옮기는 정렬 방식이다.시간 복잡도 : $O(n^2)$장점 : 데이터 교환 횟수가 적다단점 : 시간 복잡도가 커서 비효율적이다.특징 : 교환은 적지만, 모든 요소를
버블 정렬은 선택 정렬과 유사한 아이디어에 기반한다. 선택 정렬처럼 제일 큰 원소를 끝자리로 옮기는 작업을 반복하되 제일 큰 원소를 오른쪽으로 옮기는 방법이 다르다.인접한 2개의 레코드를 비교하여 순서대로 되어 있지 않으면 교환하는 정렬방법이다레코드의 이동과정이 물속에
선택 정렬/버블 정렬과 정반대로 착상한 정렬이다. 선택 정렬과 버블 정렬은 정렬되지 않은 배열의 크기를 n부터 하나씩 줄이는데 삽입 정렬은 정렬된 배열의 크기를 1에서 시작하여 하나씩 늘린다. 삽입 정렬의 핵심 작업은 이미 정렬된 i개짜리 배열에 하나의 원소를 더하여
‘찰스 앤터니 리처드 호어(Charles Antony Richard Hoare)’가 개발한 정렬 알고리즘퀵 정렬은 불안정 정렬 에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬 에 속한다.분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자