diff --git a/C++/Sorting algo/quicksort.cpp b/C++/Sorting algo/quicksort.cpp index f5c6726..0ef3cbe 100644 --- a/C++/Sorting algo/quicksort.cpp +++ b/C++/Sorting algo/quicksort.cpp @@ -1,42 +1,67 @@ -// A utility function to swap two elements -void swap(int* a, int* b) -{ - int t = *a; - *a = *b; - *b = t; -} -int partition (int arr[], int low, int high) -{ - int pivot = arr[high]; // pivot - int i = (low - 1); // Index of smaller element - - for (int j = low; j <= high - 1; j++) - { - // If current element is smaller than the pivot - if (arr[j] < pivot) - { - i++; // increment index of smaller element - swap(&arr[i], &arr[j]); - } - } - swap(&arr[i + 1], &arr[high]); - return (i + 1); -} - - void quickSort(int arr[], int low, int high) -{ - if (low < high) - { - int pi = partition(arr, low, high); - quickSort(arr, low, pi - 1); - quickSort(arr, pi + 1, high); - } -} -/* Function to print an array */ -void printArray(int arr[], int size) -{ - int i; - for (i = 0; i < size; i++) - cout << arr[i] << " "; - cout << endl; -} \ No newline at end of file +#include +#include +#include +#include +#include +#include +#include +using namespace std; + + + +int partition (int arr[], int low, int high) +{ + int pivot = arr[high]; // pivot + int i = (low - 1); // Index of smaller element + + for (int j = low; j <= high- 1; j++) + { + // If current element is smaller than or + // equal to pivot + if (arr[j] <= pivot) + { + i++; // increment index of smaller element + swap(arr[i], arr[j]); + } + } + swap(arr[i + 1], arr[high]); + return (i + 1); +} + + +void quickSort(int arr[], int low, int high) +{ + if (low < high) + { + /* pi is partitioning index, arr[p] is now + at right place */ + int pi = partition(arr, low, high); + + // Separately sort elements before + // partition and after partition + quickSort(arr, low, pi - 1); + quickSort(arr, pi + 1, high); + } +} + + +void printArray(int arr[], int size) +{ + int i; + for (i=0; i < size; i++) + cout<