Tuesday, January 31, 2012

Quick sort in c programming

Root function of quick sort:
[sourcecode language="c"]
void quickSort(int A[] , int left , int right)
{
int pivot , l_hold , r_hold;

l_hold = left;
r_hold = right;
pivot = A[left];

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

A[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;

if(left < pivot)
quickSort(A , left , (pivot-1));
if(right > pivot)
quickSort(A , (pivot+1) , right);
}

[/sourcecode]
Full code of quick sort:

[sourcecode language="c"]
#include <stdio.h>

void quickSort(int [], int, int);
void Print(int [], int);

int main()
{
int i , n ;
int A[50];

printf("How many Elements (Not more than 50 !!): ");
scanf("%d",&n);

printf("Enter %d Numbers: \n",n);
for(i=0 ; i<n ; i++)
{
scanf("%d",&A[i]);
}

quickSort(A,0,n-1);

Print(A,n);

return 0;
}

void Print(int A[] , int N)
{
int i;

printf("After Sorting The Elements Are: \n");
for(i=0 ; i<N ; i++)
{
printf("%4d",A[i]);
}
printf("\n");
}

void quickSort(int A[] , int left , int right)
{
int pivot , l_hold , r_hold;

l_hold = left;
r_hold = right;
pivot = A[left];

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

A[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;

if(left < pivot)
quickSort(A , left , (pivot-1));
if(right > pivot)
quickSort(A , (pivot+1) , right);
}

[/sourcecode]

1 comment:

  1. I simply want to tell you that I'm new to weblog and seriously savored this web-site. Probably I’m going to bookmark your blog post . You surely come with exceptional article content. Thanks a lot for revealing your website page.

    ReplyDelete

Note: Only a member of this blog may post a comment.