From 6dab0b415640d2de0a9c986c89803b1972a9143b Mon Sep 17 00:00:00 2001 From: Sourav Mondal <109263708+sourav2524@users.noreply.github.com> Date: Tue, 11 Oct 2022 10:00:27 +0530 Subject: [PATCH] Create Quicksort_2111200001077.c Quicksort algorithm by Sourav --- Intermediate/Quicksort_2111200001077.c | 80 ++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Intermediate/Quicksort_2111200001077.c diff --git a/Intermediate/Quicksort_2111200001077.c b/Intermediate/Quicksort_2111200001077.c new file mode 100644 index 00000000..345dbb80 --- /dev/null +++ b/Intermediate/Quicksort_2111200001077.c @@ -0,0 +1,80 @@ +// Quick sort in C + +#include + +// function to swap elements +void swap(int *a, int *b) { + int t = *a; + *a = *b; + *b = t; +} + +// function to find the partition position +int partition(int array[], int low, int high) { + + // select the rightmost element as pivot + int pivot = array[high]; + + // pointer for greater element + int i = (low - 1); + + // traverse each element of the array + // compare them with the pivot + for (int j = low; j < high; j++) { + if (array[j] <= pivot) { + + // if element smaller than pivot is found + // swap it with the greater element pointed by i + i++; + + // swap element at i with element at j + swap(&array[i], &array[j]); + } + } + + // swap the pivot element with the greater element at i + swap(&array[i + 1], &array[high]); + + // return the partition point + return (i + 1); +} + +void quickSort(int array[], int low, int high) { + if (low < high) { + + // find the pivot element such that + // elements smaller than pivot are on left of pivot + // elements greater than pivot are on right of pivot + int pi = partition(array, low, high); + + // recursive call on the left of pivot + quickSort(array, low, pi - 1); + + // recursive call on the right of pivot + quickSort(array, pi + 1, high); + } +} + +// function to print array elements +void printArray(int array[], int size) { + for (int i = 0; i < size; ++i) { + printf("%d ", array[i]); + } + printf("\n"); +} + +// main function +int main() { + int data[] = {8, 7, 2, 1, 0, 9, 6}; + + int n = sizeof(data) / sizeof(data[0]); + + printf("Unsorted Array\n"); + printArray(data, n); + + // perform quicksort on data + quickSort(data, 0, n - 1); + + printf("Sorted array in ascending order: \n"); + printArray(data, n); +}