Wednesday 26 September 2012

MERGE SORT



/* merge sort*/

#include<stdio.h>
#define MAX 20
int a[MAX];
void merge(int low,int mid,int high)
{
    int temp[MAX];
    int i=low;
    int j=mid+1;
    int k=low;
    while((i<=mid)&&(j<=high))
    {

        if(a[i]<=a[j])
            temp[k++]=a[i++];
        else
            temp[k++]=a[j++];

    }
    while(i<=mid)
        temp[k++]=a[i++];
    while(j<=high)
        temp[k++]=a[j++];
    for(i=low;i<=high;i++)
        a[i]=temp[i];

}
void merge_sort(int low,int high)
{
    int mid;
    if(low!=high)
    {
        mid=(low+high)/2;
        merge_sort(low,mid);
        merge_sort(mid+1,high);
        merge(low,mid,high);

    }
}
main()
{
    int i,n;
    printf("\nEnter the number of elements:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("\nEnter element %d:",i+1);
        scanf("%d",&a[i]);
    }
    printf("\nUnsorted list is:\n ");
    for(i=0;i<n;i++)
        printf("%d\t",a[i]);
    merge_sort(0,n-1);
    printf("\nSorted list is:\n");
    for(i=0;i<n;i++)
        printf("%d\t",a[i]);


}





                             .......OUTPUT....

Enter the number of elements:5

Enter element 1:6

Enter element 2:3

Enter element 3:9

Enter element 4:4

Enter element 5:2

Unsorted list is:
 6      3       9       4       2
Sorted list is:
2       3       4       6       9









QUICK SORT



/* quick sort*/

#include<stdio.h>
int a[20],n;
void sort(int a[],int lb,int ub)
{
          int p;
          if(lb>=ub)
                   return;
          p=partetion(a,lb,ub);
          sort(a,lb,p-1);
          sort(a,p+1,ub);
}
int partetion(int a[],int lb,int ub)
{
          int down,up,key,t;
          down=lb;
          up=ub;
          key=a[lb];
          while(down<up)
          {
                   while((key>=a[down]) &&(down<up))
                             down++;
                   while(key<a[up])
                             up--;
                   if(down<up)
                   {
                             t=a[down];
                             a[down]=a[up];
                             a[up]=t;
                   }
          }
          a[lb]=a[up];
          a[up]=key;
          return up;
}
main()
{
          int i;
          printf("enter the number of elements:");
          scanf("%d",&n);
          for(i=1;i<=n;i++)
          {
                   printf("enter element %d:",i);
                   scanf("%d",&a[i]);
          }
          printf("unsorted list:");
          for(i=1;i<=n;i++)
                   printf("\t%d",a[i]);
          sort(a,1,n);
          printf("\nsorted list:\n");
          for(i=1;i<=n;i++)
                   printf("%d\t",a[i]);
}
                   .......OUTPUT.......

enter the number of elements:5
enter element 1:6
enter element 2:9
enter element 3:3
enter element 4:1
enter element 5:7
unsorted list:  6       9       3       1       7
sorted list:
1       3       6       7       9