프로그래밍/알고리즘

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);
	}
}