Wednesday, January 31, 2024

QUICK SORT - DSTC using C Language (Source Code Implemented)

QUICK SORT
Implemented using C Language 
 

C Language Code: 


QUICK.C

// QUICK SORTING using C Language

#include <stdlib.h>
#include <stdio.h>
#include <process.h>

#define NUM_ITEMS 10

void quickSort(int numbers[], int array_size);
void q_sort(int numbers[], int left, int right);
void prnArray(int numbers[], int array_size) ;

int numbers[NUM_ITEMS];

int main()
{
    int i;
    clrscr() ;
    //seed random number generator
    srand(getpid());

    //fill array with random integers
    for (i = 0; i < NUM_ITEMS; i++)
        numbers[i] = rand();

    printf("\n Before Quick Sort.\n");
    prnArray(numbers, NUM_ITEMS) ;

    //perform quick sort on array
    quickSort(numbers, NUM_ITEMS);

    printf("\n After Quick Sort.\n") ;
    prnArray(numbers, NUM_ITEMS) ;
}

void quickSort(int numbers[], int array_size)
{
    q_sort(numbers, 0, array_size - 1) ;
}


void q_sort(int numbers[], int left, int right)
{
    int pivot, l_hold, r_hold;

    l_hold = left;
    r_hold = right;
    pivot = numbers[left];
    while (left < right)
    {
        while ((numbers[right] >= pivot) && (left < right))
            right--;
        if (left != right)
        {
            numbers[left] = numbers[right];
            left++;
        }

        while ((numbers[left] <= pivot) && (left < right))
            left++;
        if (left != right)
        {
            numbers[right] = numbers[left];
            right--;
        }

}
    numbers[left] = pivot;
    pivot = left;
    left = l_hold;
    right = r_hold;
    if (left < pivot)
        q_sort(numbers, left, pivot-1);
    if (right > pivot)
        q_sort(numbers, pivot+1, right);
}

void prnArray(int numbers[], int array_size)
{
    int x ;
    for(x=0; x < array_size; x++)
        printf("%d\t", numbers[x]) ;
}

 

No comments: