From 416f3ab3d73779434c2ef39d56626be394a2699a Mon Sep 17 00:00:00 2001 From: Aman Sohani Date: Sun, 20 Oct 2019 09:10:43 +0000 Subject: [PATCH] Quick Sort Without using Recursion --- QuickSortNoRecursion.cpp | 86 +++++++++++++++++++++++++++++++++++++++ a.out | Bin 0 -> 13310 bytes 2 files changed, 86 insertions(+) create mode 100755 QuickSortNoRecursion.cpp create mode 100755 a.out diff --git a/QuickSortNoRecursion.cpp b/QuickSortNoRecursion.cpp new file mode 100755 index 0000000..74f8e26 --- /dev/null +++ b/QuickSortNoRecursion.cpp @@ -0,0 +1,86 @@ +// An iterative implementation of quick sort +#include +using namespace std; + +// A utility function to swap two elements +void swap(int* a, int* b) +{ + int t = *a; + *a = *b; + *b = t; +} + +/* This function is same in both iterative and recursive*/ +int partition(int arr[], int l, int h) +{ + int x = arr[h]; + int i = (l - 1); + + for (int j = l; j <= h - 1; j++) { + if (arr[j] <= x) { + i++; + swap(&arr[i], &arr[j]); + } + } + swap(&arr[i + 1], &arr[h]); + return (i + 1); +} + +/* A[] --> Array to be sorted, +l --> Starting index, +h --> Ending index */ +void quickSortIterative(int arr[], int l, int h) +{ + // Create an auxiliary stack + int stack[h - l + 1]; + + // initialize top of stack + int top = -1; + + // push initial values of l and h to stack + stack[++top] = l; + stack[++top] = h; + + // Keep popping from stack while is not empty + while (top >= 0) { + // Pop h and l + h = stack[top--]; + l = stack[top--]; + + // Set pivot element at its correct position + // in sorted array + int p = partition(arr, l, h); + + // If there are elements on left side of pivot, + // then push left side to stack + if (p - 1 > l) { + stack[++top] = l; + stack[++top] = p - 1; + } + + // If there are elements on right side of pivot, + // then push right side to stack + if (p + 1 < h) { + stack[++top] = p + 1; + stack[++top] = h; + } + } +} + +// A utility function to print contents of arr +void printArr(int arr[], int n) +{ + int i; + for (i = 0; i < n; ++i) + cout << arr[i] << " "; +} + +// Driver code +int main() +{ + int arr[] = { 4, 3, 5, 2, 1, 3, 2, 3 }; + int n = sizeof(arr) / sizeof(*arr); + quickSortIterative(arr, 0, n - 1); + printArr(arr, n); + return 0; +} \ No newline at end of file diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..7e4c1f3d6c5ead96555a5405359ecba71ccb2030 GIT binary patch literal 13310 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 PG(RohHpxtQC({1_Rd^)M literal 0 HcmV?d00001