Skip to main content

Quick Sort in C Code with Algorithm using Recursion and Code Reducing Techniques

Quick Sort in C Code with Algorithm using Recursion and Code Reducing Techniques :

Example for Quick Sort Program in C using Recursion with Algorithm is given below :-

Quicksort is a divide and conquer algorithm. Quicksort first divides a large list into two smaller sub-lists: the low elements and the high elements. Quicksort can then recursively sort the sub-lists. Pick an element, called a pivot, from the list. Reorder the list so that all elements with values less than the pivot come before the pivot, while all elements with values greater than the pivot come after it (equal values can go either way). After this partitioning, the pivot is in its final position. This is called the partition operation. Recursively sort the sub-list of lesser elements and the sub-list of greater elements. The base case of the recursion are lists of size zero or one, which never need to be sorted.

#include<stdio.h>
#include<conio.h>

void quick_Sort( int [], int, int ); /* function prototype declaration */

void main()
{
int a[ 100 ], n, i;
clrscr();

printf( "Enter the Number array elements to be sorted :" );
scanf( "%d", &n );

printf( "Enter array elements :\n" );
for ( i = 0; i < n ; scanf( "%d", &a[ i ] ), i++ ); /* use ; to end FOR LOOP, as one statement contains inside the LOOP */
quick_Sort( a, 0, n – 1 ); /* UDF calls here */

printf( "The Sorted Array is given below\n" );
for ( i = 0 ; i < n ; printf( "%d\t", a[ i ] ), i++ ); /* did as above, printf() can also be put out side FOR LOOP as usual */
getch();
}
void quick_Sort( int a[], int low, int high ) /* UDF defines here */
{
int l, h, key, temp, t;
key = a[ low ];
l = low;
h = high;
while ( low < high )
{
if ( a[ low ] < key )
{
low = low + 1;
}
else
{
if ( a[ high ] > key )
{
high = high – 1;
}
else
{
temp = a[ low ];
a[ low ] = a[ high ];
a[ high ] = temp;
}
}
}
t = key;
key = a[ high ];
a[ high ] = t;
if ( l < high )
{
quick_Sort( a, 0, high – 1 );
}
if ( low < h )
{
quick_Sort( a, high + 1, n – 1 );
}
}

Popular posts from this blog

Swapping of Two Numbers in C or C Program to Swap Two Numbers

Swapping of Two Numbers in C or C Program to Swap Two Numbers or C program to Swap two numbers without using a third variable #include <stdio.h> #include <conio.h>  void main() {    int x, y, temp;    clrscr();    // to clear screen       printf("Enter the value of x and y\n");    scanf("%d%d", &x, &y);    printf("Before Swapping\nx = %d\ny = %d\n",x,y);    temp = x;    x    = y;    y    = temp;    /*       without using temp variable, this can be used    let x=4 and y=5    x = x + y ;   x=x+y => x=4+5 => x=9     y = x - y ;   y=x-y => y=9-5 => y=4  value changed    x = x - y ;   x=x-y => x=9-4 => x=5  value changed      */       printf("After Swapping\nx ...

C Code Shortening Techniques or My Logic for Reduced Source Code Writing in C Program Language

C Code Shortening Techniques or My Logic for Reduced Source Code Writing Tips and Tricks in C Program Language :- Role of Semi Colon(;) and Curly Braces({ }) in C Program Perhaps, you might have heard that the for() loop should not end with ";" like if(). But, in fact the ";" is using in C language as a Statement Terminator, so, if we want to terminate for() loop, then we should use ";" at the end of for() loop. [ Header files are to be included as usual, it is not written in the examples ] Question : write a C program to print 1 to 10 numbers using for() loop ? Example 1 : void main() { int i; for ( i = 1 ; i <= 10 ; i++ ) { printf("%d\n",i); } } /* above program, for() loop has one statement outside, so we do not use ";" at the end, because if we put ";" the for() will not take the continuing statement as its own. */ Example 2 : void main() { int i; for ( i = 1 ; i <= 10 ; printf( "%d \n" , i ...

How to create User Defined Functions in C, see example Perfect_Number() function used as UDF in C Program

How to create User Defined Functions in C, see example Perfect_Number() function used as UDF in C Program :- Example : This is a program to find Perfect Numbers upto a limit using User Defined Function(UDF) in C Program Language :- #include<stdio.h> #include<conio.h> int Perfect_Number(int); /* UDF function prototype declaration : int argument and int returns */ main() { int lmt,num; clrscr(); printf("Enter a Limit :"); scanf("%d",&lmt); for(num=5 ; num<=lmt ; num++) { /* function calls here with Actual Parameter num and returns either 1 or 0 and checks */ if(Perfect_Number(num)==1) { printf("\n%d",num); } } getch(); } /* Either the function should be defined out side the main() or it should be in one of the header files included. function definition with a Formal Parameter as n */ int Perfect_Number(int n) { int a,sm; sm=0; for(a=1 ; a<n ; a++) { if(n%a==0) { sm=sm+a; } } if(sm==n) return 1; else ...