vishnu-t
1/15/2018 - 6:59 PM

Quick Sort

#include<stdio.h>
//swapping two numbers
void swap(int* a, int* b){
    int temp = *a;
    *a = *b;
    *b = temp;
}

int partition(int* a, int s, int e){
    int i,j=s-1;
    int pivot = a[e];
    for(i=s; i<e; i++){
        if(a[i] <= pivot){
            j++;
            swap(&a[i],&a[j]);
        }
    }
    swap(&a[j+1],&a[e]);
    return j+1;
}

void quicksort(int* a, int s, int e){
    if(s >= e) return;
    int pi = partition(a,s,e);
    quicksort(a,s,pi-1);
    quicksort(a,pi+1,e);
}

int main(){
    int n;
    printf("Enter size of array\n");
    scanf("%d",&n);
    int a[n],i;
    printf("Enter elements of array\n");
    for(i=0; i<n; i++)
        scanf("%d",a+i);
    quicksort(a,0,n-1);
    printf("Sorted array:\n");
    for(i=0; i<n; i++)
        printf("%d ",a[i]);
    return 0;
}