diff --git a/question1.c b/question1.c index e9f8c0e..5c2adbf 100644 --- a/question1.c +++ b/question1.c @@ -1,38 +1,44 @@ -// Sort an array using c programing langauge - #include - void main() - { - - int i, j, a, n, num[30]; - printf("Enter the value of N \n"); - scanf("%d", &n); - - printf("Enter the numbers \n"); - for (i = 0; i < n; ++i){ - printf("Enter element : %d",i+1); - scanf("%d", &num[i]); - } - for (i = 0; i < n; ++i) - { - - for (j = i + 1; j < n; ++j) - { - - if (num[i] < num[j]) - { - - a = number[i]; - number[i] = number[j]; - number[j] = a; - - } - - } - - } - - printf("The numbers arranged in drsending order are given below \n"); - for (i = 0; i < n; ++i) - printf("%d\n", number[i]); - +#include +void swap(int *a, int *b) { + int t = *a; + *a = *b; + *b = t; +} +int partition(int array[], int low, int high) { + int pivot = array[high]; + int i = (low - 1); + for (int j = low; j < high; j++) { + if (array[j] <= pivot) { + i++; + swap(&array[i], &array[j]); } + } + swap(&array[i + 1], &array[high]); + return (i + 1); +} + +void quickSort(int array[], int low, int high) { + if (low < high) { + int pi = partition(array, low, high); + quickSort(array, low, pi - 1); + quickSort(array, pi + 1, high); + } +} +void printArray(int array[], int size) { + for (int i = 0; i < size; ++i) { + printf("%d ", array[i]); + } + printf("\n"); +} +int main() { + int data[] = {100,500,410,526,22}; + + int n = sizeof(data) / sizeof(data[0]); + + printf("Unsorted Array\n"); + printArray(data, n); + quickSort(data, 0, n - 1); + + printf("Sorted array in ascending order: \n"); + printArray(data, n); +} \ No newline at end of file