티스토리 뷰

공부

[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

'공부' 카테고리의 다른 글

[DataStructure] Queue?  (0) 2018.09.13
[Ubuntu] Linux terminal process without kill after logout  (0) 2018.09.12
[DP] changeCoin?  (0) 2018.09.08
[Greedy] jewelryThief - priority_queue(heap)  (0) 2018.09.08
[SQL] groupBy & having?  (0) 2018.09.08
댓글