⇰ QUICK SORT :-
Quick sort is one of the type of sorting technique. It follows the divide and conquer algorithm. The Quick sort treats an array as a list of elements. When sorting process begins, it selects the List's middle element as the list pivote. The algorithm then divides the list into two sub-lists, one with the elements that are less then the list pivote and other list with elements greater then or equal to list pivote.
The algorithm then recursively invokes or calls itself with both the list. Each time when the sorting algorithm is invoked, it further divides the elements into smaller sub-lists. This algorithm is quite efficient for large-sized data. In quick Sort generally middle element of list is considered as pivote, but we can take pivot in different ways as follows:-
i > picking first element as pivot.
ii > picking last element as pivot
iii > Pick a random element as pivot.
iv > Pick middle element as pivot (We are using it in example).
array:- listof element,
first:- position of 1st element in list,
last:- position of last element in list.
Step2 :- Repeat through step7
while ( low <= high)
Step3 :- Repeat step4
while ( Array[ high] < pivote)
Step4 :- low = low+1
Step5 :- Repeat step6
while( array [high] < pivote)
Step6 :- high = high-1
Step7 :- if low <= high
i> temp = array [low]
ii> array[low] = array[high]
iii> array[high] = temp
iv> low = low+1
v> high = high -1
Step8 :- if first < high
QSort ( array, first, high)
Step9 :- if first < last
QSort ( array, low, last)
Step10 :- Exit.
EXAMPLE :-
Let us take a unsorted list :-
8 11 13 9 52 44 77 66 12
⇰ ALGORITHM OF QUICK SORT :-
Function:- QSort( array, first, last) where,array:- listof element,
first:- position of 1st element in list,
last:- position of last element in list.
Step1 :- Initialize.
low = first
high = last
pivot = arry [ (low + high) /2]
low = first
high = last
pivot = arry [ (low + high) /2]
Step2 :- Repeat through step7
while ( low <= high)
Step3 :- Repeat step4
while ( Array[ high] < pivote)
Step4 :- low = low+1
Step5 :- Repeat step6
while( array [high] < pivote)
Step6 :- high = high-1
Step7 :- if low <= high
i> temp = array [low]
ii> array[low] = array[high]
iii> array[high] = temp
iv> low = low+1
v> high = high -1
Step8 :- if first < high
QSort ( array, first, high)
Step9 :- if first < last
QSort ( array, low, last)
Step10 :- Exit.
⇰ PROGRAM OF QUICK SORT :-
# include <stdio.h>
# include <conio.h>
void Qsort(int array[ ] , int first , int last)
{
int temp, low, high, pivot;
low = first;
high = last;
pivot = array [ (first + last) /2];
do
{
while ( array [ low ] < pivote )
{
low ++ ;
}
while ( array [ high ] > pivote)
{
high -- ;
}
if ( low <= high )
{
temp = array [ low ];
array [low ++ ] = array [ high ];
array [ high-- ] = temp;
}
} while ( low <= high) ;
if ( first < high)
Qsort ( array, first, high)
if ( low < last)
Qsort ( array, low, last)
}
void main ()
{
int value [5] , i;
printf(" \n Enter values for sort:- ");
for( i = 0 ; i < 5 ; i++)
{
scanf("%d", & value[i] );
}
Qsort (value, 0, 4);
printf( "\n Sorted value :- ");
for( i =0 ; i< 4; i++)
{
printf(" \t %d" , value [i]);
}
getch();
}
Comments
Post a Comment
Please comment.