Quick Sort


#include 

main()
{
    int k,N,*B;
    printf("Enter the number of integers to be sorted:\n");
    scanf("%d",&N);
    B = (int *)malloc(N*sizeof(int));
    printf("Enter %d integers:\n",N);
    for (k = 0; k < N; k++)
    scanf("%d",&B[k]);
    quick_sort(B,0,N-1);
    printf("The sorted array is:\n");
    printf("\n");
    for (k=0; k < N; k++)
        printf("B[%d] = %d\n",k,B[k]);
    printf("\n");
    return 0;
} /* main */

int split(int *A, int first, int last)
{
    int left, right, pivot, temp;

    pivot = A[first];
    left = first;
    right = last;  
    while (left < right)
    {
        while (A[right] > pivot)
            right--;
        while (left < right && A[left] <= pivot)
            left++;
        if (left < right)
        {
            temp = A[left];
            A[left] = A[right];
            A[right] = temp;
        }
    }            
    temp = A[right];
    A[right] = A[first];
    A[first] = temp;
    return right;
}/* split */

quick_sort(int *A, int first, int last)
{
    int position;
    if (first < last) 
    {
        position = split(A,first,last);
        quick_sort(A,first,position-1);
        quick_sort(A,position+1,last);
    }
}/* quick_sort */