Write a program to sort elements of an array in ascending order using quick sort.
#include<stdio.h> void print(int [],int); void quick_sort(int a[],int s,int e); int partition(int a[],int s,int e); void swap(int*,int*); int main() { int a[] = {50,20,70,10,90,100,30,60,40,80},size; size = sizeof(a)/sizeof(a[0]); print(a,size); quick_sort(a,0,size-1); print(a,size); return 0; } void print(int a[],int n) { int i; for(i = 0;i < n;i++) printf("%d ",a[i]); printf("\n"); } void swap(int *a,int *b) { int t; t = *a; *a = *b; *b = t; } int partition(int a[],int s,int e) { int pivot,i,index; pivot = a[e]; index = s; for(i = s;i < e;i++) { if(a[i] <= pivot) { swap(&a[i],&a[index]); index++; } } swap(&a[index],&a[e]); return index; } void quick_sort(int a[],int s,int e) { int p; if(s < e) { p = partition(a,s,e); quick_sort(a,s,p-1); quick_sort(a,p+1,e); } }
Output
50 20 70 10 90 100 30 60 40 80 10 20 30 40 50 60 70 80 90 100