개발 로그/자료구조

quick sort (C++)

k._. 2024. 2. 9. 06:48
#include <iostream>


using namespace std;

int partition(int arr[], int low, int high){
    int pivot = arr[high];
    int i = low - 1;
    
    for (int j = low; j < high; j++){
        if (arr[j] < pivot){
            i++;
            swap(arr[i], arr[j]);
        }
    }
    swap(arr[i + 1], arr[high]);
    return (i + 1);

}




void quick_sort(int arr[], int low, int high){
    if (low < high) {
        //pi = pivotindex
        int pi = partition(arr, low, high);

        quick_sort(arr, low, pi - 1);
        quick_sort(arr, pi + 1, high);
    }
}



int main(){
    int arr[] = {10, 5, 17, 3, 8, 14, 20, 1, 6, 13, 18, 2, 7, 12, 19, 4, 9, 15, 11, 16};
    int size = sizeof(arr) / sizeof(arr[0]);
    int low = 0;
    int high = size - 1;

    quick_sort(arr, low, high);

    for (int i = 0; i < size; i++)
        cout << arr[i] << ' ';
    
    return 0;
   
}