
버블 정렬은 인접한 두 데이터를 비교하면서, 큰 값을 오른쪽으로 하나씩 밀어내며 정렬하는 방식이다.정렬이 끝날수록 가장 큰 값들이 차례로 오른쪽 끝에 쌓이게 된다.$O(n²)$첫 번째 값과 두 번째 값을 비교해 왼쪽 값이 더 크면 두 값을 교환한다.한 칸 오른쪽으로 이

선택 정렬은 배열의 왼쪽부터 순서대로 정렬 구간을 확장하면서, 남은 구간에서 가장 큰(또는 작은) 값을 찾아 현재 인덱스 위치와 교환하는 방식의 정렬이다.현재 위치i 를 기준으로 오른쪽 전체 구간에서 최대값(또는 최솟값)의 인덱스를 찾는다.찾은 인덱스의 값과 현재 위치

삽입 정렬은 "이미 정렬된 구간"을 조금씩 늘려가며, 새로 들어온 값을 그 구간에서 알맞은 위치에 끼워 넣는 방식이다.두 번째 원소부터 하나씩 뽑아 앞쪽과 비교하고, 자신보다 큰 값들을 오른쪽으로 밀어 빈자리에 삽입한다.최선: $O(n)$ — 거의 정렬된 배열에서 비교

분할 정복(Divide and Conquer) 방식으로 배열을 반씩 나누어 정렬한 후 병합(Merge)하는 방식이다.평균 $O(nlogn)$ : 분할이 균형있게 일어나는 경우최악 $O(n^2)$ : 피봇이 항상 한 쪽 끝(예: 이미 정렬된 배열)을 선택할 경우피봇 선택

병합 정렬은 “분할 정복(Divide and Conquer)” 전략을 사용해 배열을 반으로 계속 나눈 뒤, 각각을 정렬하고 병합하면서 전체를 정렬하는 알고리즘이다.$O(nlogn)$병합정렬은 일정한 성능을 보인다.로직분할(Divide)배열을 절반( left~mid ,

TimSort는 실제 데이터가 “부분적으로 이미 정렬된(run)” 경우가 많다는 점을 활용해, 작은 구간은 삽입 정렬로 빠르게 정렬하고, 그 구간들을 병합 정렬처럼 합치는 하이브리드 정렬이다. 파이썬의 list.sort(), 자바의 Arrays.sort(객체 배열) 등

깊이 우선 탐색 (Depth-First Search, DFS) DFS(깊이 우선 탐색)는 그래프나 네트워크 탐색 알고리즘 중 하나로, 한 방향으로 갈 수 있을 만큼 깊이 들어간 다음, 더 이상 진행할 수 없을 때 되돌아와(backtracking) 다른 경로를 탐색하는

Greedy 알고리즘은 문제를 해결할 때 현재 단계에서 가장 좋아 보이는 선택(국소 최적해) 을 반복하여 전체 해답을 구하는 방법이다.즉, 미래의 영향을 고려하지 않고, 매 순간 최선이라고 판단되는 선택을 한다.Greedy는 "순간의 선택 합이 전체 최적을 만든다"는

Dijkstra 알고리즘은 가중치가 있는 그래프에서, 하나의 시작 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘이다.모든 간선의 가중치가 0 이상(음수 가중치 없음) 이라는 조건에서 정확하게 동작한다.다익스트라는 Greedy 전략을 기반으로 움직이며,현재까

Dynamic Programming(DP)은복잡한 문제를 작은 부분 문제로 나누고,그 부분 문제들의 해답을 저장(memoization)하여 재활용함으로써중복 계산을 제거하고 문제를 효율적으로 해결하는 알고리즘 설계 기법이다.즉,“큰 문제 = 작은 문제들의 해답 조합”이