본문 바로가기

자료구조3

[알고리즘] 정렬 알고리즘(Sorting algorithm) (1) 정렬(Sort)이란? 정렬이란, 주어진 데이터를 정해진 기준에 따라 순서를 재배열하는 작업을 말한다. 정렬 알고리즘의 종류 매우 다양한 정렬 알고리즘이 존재하지만, 대표적인 것들만 나열해보면 버블 정렬(Bubble sort) 선택 정렬(Selection sort) 삽입 정렬(Insertion sort) 병합 정렬(Merge sort) 퀵 정렬(Quick sort) 등이 있다. 특히, 병합 정렬과 퀵 정렬은 복잡하지만 효율적인 정렬로 분류된다. 그렇다면, 모든 경우에 대해 퀵 정렬이나 병합 정렬을 적용하는것이 유리할까? 결론부터 말하자면, 그렇지 않다. 모든 경우에 대해 최적의 성능을 보여주는 정렬 알고리즘은 존재하지 않는다. 그렇기 때문에, 각 상황에 맞게 최적의 정렬 알고리즘을 선택하여 적용해야만 한다.. 2022. 7. 18.
[자료구조] 큐(Queue)의 개념과 구현(2) 2022.07.11 - [자료구조&알고리즘] - [자료구조] 큐(Queue)의 개념과 구현(1) [자료구조] 큐(Queue)의 개념과 구현(1) 큐(Queue)란? 큐는 먼저 들어온 데이터가 먼저 나가는 특성인 선입선출(FIFO)의 특징을 가진 선형 자료구조이다. 큐는 뒤쪽(rear)에서 데이터가 삽입되고, 앞쪽(front)에서 데이터 삭제가 이루어진다. gbdai.tistory.com 지난 글에서는 단순한 형태의 큐에 대해서 알아보았다. 큐를 구현하는 방법은 크게 두 가지가 있는데 연결 리스트를 이용한 큐의 구현 배열을 이용한 큐의 구현 하나씩 알아보도록 하겠다. 연결 리스트를 이용한 큐의 구현 이중 연결 리스트를 이용하여, 새로 추가한 데이터를 리스트 맨 앞에 삽입하는 방식이다. 그림으로 보면 다음과.. 2022. 7. 11.
[자료구조] 스택(Stack)개념, 구현 스택(Stack)이란? 톱(Top)이라고 하는 한 쪽 끝에서 모든 삽입과 삭제가 일어나는 순서 리스트이다. 스택에서는 가장 마지막으로 삽입된 원소가 가장 먼저 삭제되는 LIFO(Last-In-First-Out)의 성질을 가진다. 예를 들어, 원소 A, B, C ,D 를 순서대로 스택에 삽입했다고 하면, 다음과 같은 상태가 된다 여기서, 스택의 원소를 삭제해보자. 제일 마지막에 삽입된 원소는 Top에 위치한 "D" 이기 때문에, D가 삭제된다 원소 D는 삭제되고, C가 top 원소가 되었다. 이 상태에서 다시 원소를 삽입하면 다음과 같은 상태가 된다. 스택(Stack)의 구현 위에서 알아본 스택을 c++로 구현해보았다. 배열을 이용해서 진행하였다. stack.hpp #ifndef stack_hpp #def.. 2022. 6. 12.