Quick Sort

#include <stdio.h>
#include <stdlib.h>
#define N 10

void quickSort(int *A, int first, int last)
{
    int pivot,i,j,temp;
    
    if(first>=last) return;

    pivot = first;
    i     = first;
    j     = last;
    
    //partition
    while(i < j)
    {
        while(A[i] <= A[pivot])
        i++;
        
        while(A[j] > A[pivot])
        j--;
        
        if(i < j)
        {
            temp = A[i];
            A[i] = A[j];
            A[j] = temp;
        }
    }
    temp     = A[pivot];
    A[pivot] = A[j];
    A[j]     = temp;
    
    quickSort(A,first,j-1);
    quickSort(A,j+1,last);
}

void printArray(int A[])
{
    int i;
    printf("Array A = { ");
    for (i=0;i<N;i++)
    printf("%d ",A[i]);
    printf("}");
    printf("\n");
}

int main(void)
{
    int A[N] = {45,76,23,67,12,786,23,58,2,541};
    
    //Before Sort
    printArray(A);
    
    //Merge sort
    quickSort(A,0,N-1);
    
    //Before Sort
    printArray(A);
    
    return 0;
}

No comments:

Post a Comment