diff --git a/Sorting/C/Quick_sort.c.c b/Sorting/C/Quick_sort.c.c new file mode 100644 index 0000000..37f28bc --- /dev/null +++ b/Sorting/C/Quick_sort.c.c @@ -0,0 +1,100 @@ +#include +#include + +void printarr(int); +void quicksort(int,int); +int partition(int,int); +void swap(int *, int *); + +int *a; + +int main() +{ + int i,n; + + printf("Enter the size of the array:\n"); + scanf("%d",&n); + a=(int*) calloc(n,sizeof(int)); + + printf("Enter the array:\n"); + for (i=0; i=l)) + { + if(a[r]<=a[pivot]) + { + swap(&a[r],&a[pivot]); + pivot=r; + break; + } + r--; + } + if(r==l) + flag=1; + + while((l!=pivot)&&(l<=r)&&(flag!=1)) + { + if(a[l]>=a[pivot]) + { + swap(&a[l],&a[pivot]); + pivot=l; + break; + } + l++; + } + if(l==r) + flag=1; + } + + return pivot; +} + +void swap(int *a, int *b) +{ + *a=*a+*b; + *b=*a-*b; + *a=*a-*b; +} + +void printarr(int n) +{ + int i; + for (i=0; i