반응형

CS/알고리즘 5

합병 정렬(Merge Sort) 알고리즘 파이썬 예제와 설명

합병 정렬(Merge Sort)은 분할 정복(Divide and Conquer) 알고리즘의 하나입니다. 분할 정복 알고리즘은 큰 문제를 작은 문제로 분할하고, 각각의 작은 문제를 해결한 후에 그 결과를 이용하여 큰 문제를 해결하는 방식입니다. 합병 정렬의 구체적인 과정은 다음과 같습니다. 1. 배열을 두 개의 부분 배열로 분할합니다. 이때 분할되는 부분 배열의 크기는 대략 절반으로 나누어집니다. 2. 각각의 부분 배열을 재귀적으로 합병 정렬을 수행합니다. 3. 정렬된 두 개의 부분 배열을 합병합니다. 이때, 두 부분 배열의 첫 번째 원소부터 비교하여 작은 순서대로 새로운 배열에 저장합니다. 4. 분할된 부분 배열의 크기가 1이 될 때까지 위의 과정을 반복합니다. 아래는 합병 정렬의 구현 예시입니다. 배열..

CS/알고리즘 2023.05.10

버블 정렬(Bubble Sort) 알고리즘 예제와 설명

버블 정렬(Bubble Sort)은 인접한 두 원소를 비교하여 정렬하는 알고리즘 중 하나로, 간단하고 이해하기 쉽습니다. 아래는 C 언어로 구현한 버블 정렬 예제 코드입니다. #include void bubble_sort(int arr[], int n) { int i, j, temp; for (i = n - 1; i > 0; i--) { for (j = 0; j arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = {5, 2, 4, 6, 1, 3}; int n = sizeof(arr) / sizeof(int); bubble_sort(..

CS/알고리즘 2023.05.10

퀵 소트(Quick Sort) 알고리즘 파이썬 예제와 설명

퀵 소트(Quick Sort)는 분할 정복(divide and conquer) 알고리즘을 기반으로 하는 정렬 알고리즘 중 하나입니다. 평균적으로 매우 빠른 수행 시간을 가지고 있어서 실제로도 많이 사용되고 있습니다. 퀵 소트 알고리즘은 다음과 같은 단계로 구성됩니다. 1. 배열 내에서 특정한 기준값(pivot)을 선택합니다. 대개는 배열의 중간값을 선택하거나, 랜덤하게 선택합니다. 2. 배열을 pivot을 기준으로, 작은 값들은 pivot의 왼쪽에 위치시키고, 큰 값들은 pivot의 오른쪽에 위치시킵니다. 이 과정을 partitioning이라고 부릅니다. 3. pivot을 제외한 왼쪽과 오른쪽 부분 배열에 대해서도 같은 방식으로 partitioning을 수행합니다. 4. 2, 3 과정을 반복적으로 수행하..

CS/알고리즘 2023.05.09

알고리즘 이진 탐색(Binary Search) 파이썬 예제

이진 탐색(Binary Search)은 정렬된 배열에서 특정한 값을 찾는 알고리즘입니다. 이 알고리즘은 배열을 반으로 나누어 찾고자 하는 값과 비교하면서 탐색 범위를 반으로 줄여가는 방식으로 동작합니다. 예를 들어, 오름차순으로 정렬된 다음과 같은 배열이 있다고 가정해봅시다. [1, 3, 5, 7, 9, 11, 13, 15] 이 배열에서 7을 찾는다면, 배열의 중간 값인 9와 비교하여 7이 9보다 작기 때문에 7이 존재할 수 있는 왼쪽 배열 `[1, 3, 5, 7]`에서 이진 탐색을 다시 수행합니다. 이번에는 왼쪽 배열의 중간 값인 3과 비교하여 7이 3보다 크기 때문에 오른쪽 배열 `[5, 7]`에서 이진 탐색을 다시 수행합니다. 이번에는 오른쪽 배열의 중간 값인 7이 7과 일치하기 때문에 7을 찾았습..

CS/알고리즘 2023.05.06

알고리즘 선택 정렬(Selection Sort) 예제

알고리즘 기초 예제로는 다양한 문제가 있지만, 여기서는 가장 기본적인 정렬 알고리즘 중 하나인 선택 정렬(Selection Sort) 예제를 들어보겠습니다. 선택 정렬은 주어진 배열에서 최소값을 찾아 맨 앞으로 보내는 과정을 반복하여 정렬하는 알고리즘입니다. 다음은 선택 정렬의 동작 과정을 설명한 pseudocode(의사 코드)입니다. SelectionSort(array A) for i = 0 to n-2 minIndex = i for j = i+1 to n-1 if A[j] < A[minIndex] minIndex = j swap A[i] and A[minIndex] 위의 pseudocode에서 `A`는 정렬할 배열, `n`은 배열의 크기입니다. 이제 위 pseudocode를 실제 코드로 구현해보겠습니..

CS/알고리즘 2023.05.06
반응형