diff --git a/Quicksort.java b/Quicksort.java new file mode 100644 index 0000000..37db024 --- /dev/null +++ b/Quicksort.java @@ -0,0 +1,57 @@ +#include +/* function that consider last element as pivot, +place the pivot at its exact position, and place +smaller elements to left of pivot and greater +elements to right of pivot. */ +int partition (int a[], int start, int end) +{ + int pivot = a[end]; // pivot element + int i = (start - 1); + + for (int j = start; j <= end - 1; j++) + { + // If current element is smaller than the pivot + if (a[j] < pivot) + { + i++; // increment index of smaller element + int t = a[i]; + a[i] = a[j]; + a[j] = t; + } + } + int t = a[i+1]; + a[i+1] = a[end]; + a[end] = t; + return (i + 1); +} + +/* function to implement quick sort */ +void quick(int a[], int start, int end) /* a[] = array to be sorted, start = Starting index, end = Ending index */ +{ + if (start < end) + { + int p = partition(a, start, end); //p is the partitioning index + quick(a, start, p - 1); + quick(a, p + 1, end); + } +} + +/* function to print an array */ +void printArr(int a[], int n) +{ + int i; + for (i = 0; i < n; i++) + printf("%d ", a[i]); +} +int main() +{ + int a[] = { 24, 9, 29, 14, 19, 27 }; + int n = sizeof(a) / sizeof(a[0]); + printf("Before sorting array elements are - \n"); + printArr(a, n); + quick(a, 0, n - 1); + printf("\nAfter sorting array elements are - \n"); + printArr(a, n); + + return 0; +}