알고리즘 이야기

기수정렬(Radix sort)의 개념, 복잡도, 파이썬 코드

기수정렬의 개념 기수정렬은 숫자를 자릿수별로 정렬하는 방식으로, 비교 기반의 정렬 알고리즘과는 다른 방식으로 작동합니다. 기수(Radix)는 특정 진수를 나타내는 숫자들 을 의미합니다. 예를 들어, 10진수의 기는 0부터 9까지, 2진수의 기는 0과 1입니다. 기수정렬에서는 이러한 자릿수를 이용해 데이터를 정렬합니다. 기수정렬의 핵심은, 숫자를 자릿수 단위로 나누어 가장 낮은 자릿수부터  비교해가며 정렬한다는 점입…

ALMI

힙정렬의 특징, 복잡도, 파이썬 코드

힙정렬의 개념 힙정렬(Heap Sort)은 힙(Heap)이라는 자료구조를 사용하는 정렬 알고리즘입니다. 힙은 완전 이진 트리로 구성된 특수한 구조를 가지고 있는데, 힙을 이용해 배열을 정렬하는 방식입니다.  힙의 구조 힙은 이진 트리의 일종으로, 각 노드의 값이 자식 노드의 값보다 크거나 작은 특성을 가집니다. 크게 두 가지 유형이 있는데요: 최대 힙(Max Heap)**: 부모 노드가 자식 노드…

ALMI

퀵정렬의 특징, 복잡도, 파이썬 코드

퀵정렬의 개념 퀵정렬은 말 그대로 빠른 정렬 알고리즘입니다. 정렬할 데이터를 두 개의 그룹으로 나눠서 처리하는데요, 이때 기준이 되는 '피벗(pivot)'을 중심으로 데이터를 나누어 정렬하는 방식이죠. 쉽게 말해, 기준 키(피벗) 를 정한 다음, 그 피벗보다 작은 값들은 앞쪽으로, 큰 값들은 뒤쪽으로 보내면서 데이터를 정렬하는 방식이에요. 이를 재귀적으로 계속 나눠서 정렬을 진행하죠. 퀵정렬의 시간복잡도 1. 평균 시간복잡도: …

ALMI

병합정렬의 특징, 복잡도, 파이썬 코드

병합정렬의 개념 먼저, 병합정렬의 기본 개념부터 설명드릴게요. 병합정렬은 데이터를 정렬하는 과정에서 두 가지 주요 단계를 거칩니다. 1. 데이터를 쪼개기(Split) : 정렬해야 할 데이터를 반으로 나눕니다. 그리고 그 나눈 데이터를 다시 반으로, 또 반으로 나눕니다. 이 과정을 더 이상 나눌 수 없을 때까지, 즉 데이터가 한 개씩 남을 때까지 반복해요. 2. 합병하기(Merge) : 이제 나눠진 데이터를 하나씩 다시 합칩니다. 이때 합칠 때…

ALMI

쉘정렬의 특징, 복잡도, 파이썬 코드

쉘 정렬의 개념 쉘 정렬은 간단하게 말하면 삽입 정렬을 개선한 알고리즘 이에요. 삽입 정렬은 간단하고 직관적인 알고리즘이지만, 데이터가 많이 늘어나면 비효율적이죠. 쉘 정렬은 그 단점을 보완하기 위해 여러 개의 서브 리스트로 데이터를 나누고, 각 서브 리스트를 삽입 정렬 로 정렬하는 방식입니다. 즉, 서로 떨어진 데이터들을 비교해 정렬을 하고, 점차 그 간격을 좁혀가면서 최종적으로 모든 데이터를 정렬하는 것이죠. 쉘 정렬의 핵심은 간격 이에요…

ALMI

AI 도입비용이 천문학적? 기업들이 AI 투자를 멈추지 않는 이유는?

요즘 기업들이 AI에 엄청난 돈을 쏟아붓고 있다는 소식이 끊이질 않고 있어요. 하지만 이렇게 천문학적인 비용을 투자하면서도, 그 성과가 보장되지 않는 상황에서 많은 사람들이 과연 이 베팅이 성공할지 의문을 가지고 있습니다. 그럼에도 불구하고 C-레벨 임원들은 왜 AI에 대한 투자를 멈추지 않는 걸까요? 오늘은 그 이유에 대해 좀 더 깊이 알아보려고 합니다. AI 투자, 그 규모는 어느 정도일까? AI 투자비용이 얼마나 클지 상상이 되시나요? …

ALMI

삽입정렬의 특징, 복잡도, 파이썬 코드

삽입정렬의 개념 삽입정렬은 말 그대로 새로운 데이터를 기존에 정렬된 데이터 사이에 삽입 해 전체 데이터를 정렬하는 방식이에요. 어떤 데이터를 순차적으로 살펴보면서, 그 데이터를 알맞은 위치에 삽입하는 과정을 반복합니다. 쉽게 생각해보면, 우리가 카드를 정렬해서 손에 들고 있을 때와 비슷해요. 예를 들어 카드를 하나씩 뽑아 손에 들고 있는 카드 중에 적절한 위치를 찾아 넣는 것처럼요. 처음에는 한 장의 카드만 있으니 그 카드 자체가 정렬된 상태…

ALMI

버블정렬의 특징, 복잡도, 파이썬 코드

버블정렬의 개념 버블정렬은 두 개의 인접한 요소를 비교하고, 필요에 따라 위치를 바꿔가며 정렬을 완성해 나가는 알고리즘입니다. 예를 들어, 오름차순으로 배열을 정렬할 때, 배열의 첫 번째 요소와 두 번째 요소를 비교하여 더 큰 값이 뒤로 가도록 위치를 변경합니다. 이렇게 배열의 끝까지 한 번 순회하면, 가장 큰 값이 맨 뒤로 이동하게 됩니다. 이 과정을 배열의 길이만큼 반복하여 전체 배열을 정렬합니다. 버블정렬의 이름은 마치 거품이 물 위로 …

ALMI

선택정렬의 특징, 복잡도, 파이썬 코드

정렬의 기본 개념 정렬(Sorting)은 데이터를 특정 순서에 맞게 나열하는 과정을 말합니다. 예를 들어, 숫자들이 뒤죽박죽 섞여 있다면 이를 오름차순이나 내림차순으로 정렬하는 것이죠. 이러한 정렬은 데이터 처리와 검색 속도를 높이는 데 중요한 역할을 합니다. 정렬은 크게 내부정렬 과 외부정렬 로 나뉘는데, 내부정렬은 주로 데이터의 양이 적을 때 사용합니다. 반면, 외부정렬은 대규모 데이터를 처리할 때 주로 사용되죠. 오늘 다룰 선택정렬은 내…

ALMI
게시물 더보기
검색결과 없음