[Algorithm] 퀵 정렬 (Quick Sort)
·
Programming/Algorithm & Data Structure
Quick Sort분할 정복을 이용한 정렬 알고리즘이다. (값에 따른 비균등 분할)피벗을 정한 뒤 피벗의 위치를 확정해가며 정렬을 수행하는 것이 특징일반적으로 각 부분 배열의 맨 앞 or 뒤를 피벗으로 정하는데, 이는 정렬 과정 동안 유지되어야 한다.피벗이 확정되면 피벗의 앞에는 피벗보다 작은 값, 뒤에는 큰 값이 오게 한다. (오름차순 기준)코드#include void Print(int* arr){ for (int i = 0; i p부터 pivot 한 칸 앞까지 전진 for (int j = p; j 왼쪽/오른쪽에 pivot보다 작은/큰 수로 나뉨 return i;}void QuickSort(int* arr, int p, int r){ if (p QuickSort에서 배열을 분할..
[Algorithm] 합병 정렬 (Merge Sort)
·
Programming/Algorithm & Data Structure
Merge Sort분할 정복 알고리즘을 사용한 정렬위치에 따른 균등 분할모든 원소를 하나가 될 때까지 나눈 후, 순서를 맞춰 다시 합침코드#include int temp[100];void Print(int* arr){ for (int i = 0; i arr[j]) temp[k++] = arr[j++]; else temp[k++] = arr[i++]; } // 남은 값 모두 옮기기 while (i MergeSort 함수에서 p와 r은 배열의 처음과 마지막을 가리키는 포인터다. p  Merge 함수에서는 나뉜 배열의 arr[p ~ q]와 arr[q+1 ~ r]을 정렬해서 합친 새로운 배열 temp를 만든다. 모든 과정이 끝났다면 원본..
[Algorithm] 삽입 정렬 (Insertion Sort)
·
Programming/Algorithm & Data Structure
Insertion Sort정렬된 부분과 정렬되지 않은 부분으로 나눔정렬 안 된 부분의 가장 왼쪽 원소를 정렬된 부분의 적절한 위치에 삽입하는 것을 반복정렬된 배열을 유지하면서 진행맨 처음 원소는 정렬되었다고 가정하고 시작함코드#include void Print(int* arr){ for (int i = 0; i pivot && j >= 0) { arr[j+1] = arr[j]; // 오른쪽으로 당김 j--; } arr[j+1] = pivot; }}int main(){ std::cin.tie(0); std::ios::sync_with_stdio(0); int arr[10] = {8, 31..
[Algorithm] 버블 정렬 (Bubble Sort)
·
Programming/Algorithm & Data Structure
Bubble Sort이웃하는 값과 비교해 특정 수(최대 or 최소)를 한 쪽(앞 or 뒤)로 이동시키는 과정을 반복 코드#include void Print(int* arr){ for (int i = 0; i 0; i--) { for (int j = 0; j arr[j+1]) std::swap(arr[j], arr[j+1]); } }}int main(){ std::cin.tie(0); std::ios::sync_with_stdio(0); int arr[10] = {8, 31, 48, 73, 3, 65, 20, 29, 11, 15}; Print(arr); BubbleSort(arr); Print(arr);..
[Algorithm] 선택 정렬 (Selection Sort)
·
Programming/Algorithm & Data Structure
Selection Sort각 루프마다 남아있는 원소 중 가장 큰 원소를 선택한 후, 남아있는 원소 중 맨 오른쪽 원소와 바꿈교환된 수는 다음 루프에서 제외하나의 원소가 남을 때까지 반복코드배열의 크기가 10으로 고정되어있다고 가정하고 작성한 코드이다.#include void Print(int* arr){ for (int i = 0; i 0; i--) { int maxNum = arr[0]; int maxIdx = 0; for (int j = 0; j maxNum) { maxNum = arr[j]; maxIdx = j; } } std::s..
snwdaaa
'정렬' 태그의 글 목록