#include<iostream>
#include<vector>
using namespace std;
void quickSort(vector<int> &v, int i, int j)
{
// 벡터의 크기가 0이나 1.
if(i>=j) return;
int pivot = v[(i+j)/2];
int left = i;
int right = j;
while(left<=right)
{
// 내림차순 일때는 부등호 방향을 서로 바꾼다.
while(v[left]<pivot) left++;
while(v[right]>pivot) right--;
if(left<=right)
{
swap(v[left],v[right]);
left++; right--;
}
}
quickSort(v,i,right);
quickSort(v,left,j);
}
int main()
{
vector<int> v;
v = {0,1,2,3,4,5,9,5,8,7,5,1};
quickSort(v, 0,v.size()-1);
for(int i=0; i<v.size(); i++)
cout << v[i] << endl;
return 0;
}
'Algorithm > 알고리즘 예제코드' 카테고리의 다른 글
소수판별 (0) | 2021.09.16 |
---|---|
Sort (0) | 2021.09.10 |
정규식 (0) | 2021.08.25 |
GCD와 LCM (0) | 2021.08.25 |
[알고리즘 예제][그래프탐색]BFS (0) | 2021.07.06 |