공부

[Sort] QuickSort

승가비 2018. 9. 11. 21:24
728x90

[Sort] QuickSort


#include <iostream>
using namespace std;

#define SIZE 1000000

int swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}

void print(int *arr, int n) {
for(int i=0; i<n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}

void quickSort(int *arr, int left, int right) {
if(left >= right) {
return;
}

int pivot = arr[(left + right) / 2];
int r = right;
int l = left;

while(l <= r) {
while (pivot > arr[l]) l++;
while (pivot < arr[r]) r--;

if(l < r) {
swap(arr[l], arr[r]);
l++;
r--;
}
}

quickSort(arr, left, l-1);
quickSort(arr, l+1, right);
}

int main() {
int n;
int arr[SIZE];

cin >> n;
for(int i=0; i<n; i++) {
cin >> arr[i];
}

quickSort(arr, 0, n-1);

print(arr, n);

return 0;
}


728x90