백준 2750 - 수 정렬하기

프로그래밍 이모저모/프로그래밍 2019. 8. 14. 22:17

퀵 소트를 만드는 문제. 퀵 소트의 정리는 내일 정리해서 올리자.

#include <iostream>
#include <vector>

using namespace std;
vector <int> Arr;
void partition(int start, int end)
{
    if (start > Arr.size() - 1 || end < 0 || start >= end)
        return;
    int pivot = start;
    int i = start;
    int j = end;
    while (i < j)
    {
        while (Arr[j] > Arr[pivot])
            j--;
        while (Arr[i] <= Arr[pivot] && i < j)
            i++;
        swap(Arr[i], Arr[j]);
    }
    swap(Arr[j], Arr[pivot]);
    partition(start, j - 1);
    partition(j + 1, end);


}


int main()
{
    int N;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        int num;
        cin >> num;
        Arr.push_back(num);
    }
    partition(0, N-1);
    for (int i = 0; i < N; i++)
    {
        cout << Arr[i] << endl;
    }
    return 0;
}

'프로그래밍 이모저모 > 프로그래밍' 카테고리의 다른 글

백준 10828 - 스택  (0) 2019.08.14
백준 1920 - 수 찾기  (0) 2019.08.14
백준 1149 - RGB거리  (0) 2019.08.13
백준 2003 - 수들의 합  (0) 2019.08.12
백준 1037 - 약수  (0) 2019.08.12