프로그래밍/알고리즘
Quick Sort (퀵 정렬)
coty
2019. 8. 3. 18:20
Code
#include <iostream>
using namespace std;
#define size 15
int partition(int*, int, int);
void quicksort(int*, int, int);
int main() {
int arr[size] = { 9,15,8,11,5,12,7,3,1,10,4,13,6,14,2 };
cout << "정렬 전 : ";
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
quicksort(arr, 0, 14);
cout << "\n정렬 후 : ";
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
}
int partition(int* arr, int l, int r) {
int pivot = arr[r];
int i = l - 1;
for (int j = l; j <= r - 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[r]);
return (i + 1);
}
void quicksort(int* arr, int l, int r) {
if (l < r) {
int p = partition(arr, l, r);
quicksort(arr, l, p - 1);
quicksort(arr, p + 1, r);
}
}