컴퓨터/알고리즘&자료구조
순차적으로 들어가 있는 데이터들을 담는 다양한 자료구조에서 담겨 있는 데이터들을 사용자에 의도에 따라 정렬을 하는 것은 어떻게 보면 효율적으로 데이터를 운영하는 데에 있어 필수적입니다. 본 포스트에서는 정렬을 구현하기 위한 가장 기본적인 개념인 버블 정렬 또는 거품 정렬이라 부르는 알고리즘을 공부해 보도록 하겠습니다.
컴퓨터에서 어떠한 데이터 구조에 정렬을 구현한다는 것은 마냥 단순하지는 않습니다.
본 포스트에서 설명하는 버블정렬은 가장 기초적이면서 단순한 개념으로 정렬을 하는 구조입니다. 그리고 그 기초가 되는 개념에는 Swap 알고리즘이 담겨 있다고 생각해도 됩니다.
그렇다면 무작위로 작성된 다음과 같은 데이터의 집합이 있다고 가정해 봅시다.
버블 정렬을 하는 순서는 다음과 같습니다.
내용만을 보면 단순하지만 간단한 반복이 이루어집니다. 실제 개념을 하나씩 한번 해보도록 하겠습니다.
가장 작은 순으로 숫자를 정렬하는 버블정렬의 개념을 서술해 보도록 하겠습니다.
결국 최종적으로 반복하다 하여 모두 순환하게 되면 최종적으로 정렬된 결과 값을 얻을 수 있습니다.
위의 개념을 다양한 프로그래밍 언어로 구현을 하려면 난이도가 엄청나게 높지는 않습니다. 비교적 간단하게 구현이 가능하기도 합니다. 하지만 위의 과정을 보면 느낄 수 있듯이 상당히 비 효율적인 연산과정이 많이 포함된다는 것을 느낄 수 있을 것입니다. 만약 데이터의 집합의 규모가 많으면 많을수록 비효율적인 연산과정이 많을 것으로 예상할 수 있을 것입니다. 이런 불필요한 계산과정이 늘어난다는 의미는, 기능은 수행이 가능하나 성능면에서는 좋지 않다 또는 정렬 시간이 오래걸린다 라는 말이 될 수도 있습니다. 만약 정렬 알고리즘의 개념을 처음 접했다면, 와닿지 않을 수 있습니다. 앞으로 다양한 정렬 기법들을 알아보며 비교해보도록 하겠습니다.
알고리즘 - 재귀함수 (Recursion Funtion) (0) | 2021.10.29 |
---|---|
자료구조 - MAP(맵) (0) | 2021.10.25 |
자료구조 - List(리스트)와 종류 (0) | 2021.09.06 |
자료 구조 - 배열(Array) (0) | 2021.09.05 |
자료구조 - Stack(스택)의 개념 (0) | 2021.06.24 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet