Quick Sort with no of camparison and swap
On-campus and online computer science courses to Learn the basic concepts of Computer Science.This tutorial will cover c ,c++, java, data structure and algorithm,computer graphics,microprocessor,analysis of algorithms,Digital Logic Design and Analysis,computer architecture,computer networks,operating system.
code in C:#include<stdio.h>
int comparisons=0,exchanges=0;
// is x < y ?
int less(int x, int y)
{
comparisons++;
return (x < y);
}
// exchange a[i] and a[j]
void exch(int a[] , int i, int j)
{
exchanges++;
int swap = a[i];
a[i] = a[j];
a[j] = swap;
}
void quicksort(int a[] , int left, int right)
{
if (left <= right)
{
int i = left - 1;
int j = right; // right is pivot element
while (1) {
while (less(a[++i], a[right])); // find item on left to swap
while (less(a[right], a[--j])) // find item on right to swap
if (j == left) break; // don't go out-of-bounds
if (i >= j) break; // check if pointers cross
exch(a, i, j); // swap two elements into place
}
exch(a, i, right); // swap with partition element
quicksort(a, left, i-1);
quicksort(a, i+1, right);
}
}
int main()
{
int a[100],size,i;
printf("Enter number of elements: ");
scanf("%d",&size);
printf("Enter number: \n");
for(i=0;i<size;i++)
scanf("%d",&a[i]);
quicksort(a, 0, size- 1);
printf("Sorted list in ascending order:");
for(i=0;i<size;i++)
printf(" %d",a[i]);
printf("\n\n no of comparisons: %d",comparisons);
printf("\n no of exchanges: %d",exchanges);
return 0;
}
output:-Enter number of elements: 5 Enter number: 29 21 64 20 56 Sorted list in ascending order: 20 21 29 56 64 no of comparisons: 16 no of exchanges: 6 --------------------------------

0 comments: