Arnab_Manna

merge sort as/dec

Jun 25th, 2020
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.43 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4.  
  5. void printarray(int a[],int n)
  6. {
  7.     int i;
  8.     for (i=0;i<n;i++)
  9.          printf("%d, ",a[i]);
  10. }
  11.  
  12. void merge(int a[],int lb,int mid,int ub,char ch)
  13. {
  14.     int i,j,k,n=ub;
  15.     int b[n];
  16.     i=lb;
  17.     j=mid+1;
  18.     k=lb;
  19.     if(ch=='1')
  20.     {
  21.     while(i<=mid && j<=ub)
  22.     {
  23.         if(a[i]<=a[j])
  24.         {
  25.             b[k]=a[i];
  26.             i++;
  27.         }
  28.         else
  29.         {
  30.             b[k]=a[j];
  31.             j++;
  32.         }
  33.         k++;
  34.     }
  35.     }
  36.     else if(ch=='2')
  37.     {
  38.     while(i<=mid && j<=ub)
  39.     {
  40.         if(a[i]>=a[j])
  41.         {
  42.             b[k]=a[i];
  43.             i++;
  44.         }
  45.         else
  46.         {
  47.             b[k]=a[j];
  48.             j++;
  49.         }
  50.         k++;
  51.     }
  52.     }
  53.     if(i>mid)
  54.     {
  55.         while(j<=ub)
  56.         {
  57.             b[k]=a[j];j++;k++;
  58.         }
  59.     }
  60.     else
  61.     {
  62.         while(i<=mid)
  63.         {
  64.             b[k]=a[i];i++;k++;
  65.         }
  66.     }
  67.     for(k=lb;k<=ub;k++)
  68.     {
  69.         a[k]=b[k];
  70.     }
  71. }
  72.    
  73. void merge_sort(int a[],int lb,int ub,char ch)
  74. {
  75.     int mid;
  76.     if(lb<ub)
  77.     {
  78.         mid=(lb+ub)/2;
  79.         merge_sort(a,lb,mid,ch);
  80.         merge_sort(a,mid+1,ub,ch);
  81.         merge(a,lb,mid,ub,ch);
  82.     }  
  83. }
  84.  
  85. main()
  86. {
  87.     int a[10],i,n;
  88.     char ch;
  89.     printf("enter the number of elements to be inserted : ");
  90.     scanf("%d",&n);
  91.     for(i=0;i<n;i++)
  92.     {scanf("%d",&a[i]);}
  93.     while(1)
  94.     {
  95.     printf("\n1> sort in ascending order\n2>sort in descending order\nenter your choice : ");
  96.     fflush(stdin);
  97.     ch=getche();
  98.     if(ch=='1') printf("the ascending order arrangement is : ");
  99.     else if(ch=='2') printf("the descending order arrangement is : ");
  100.     else exit(0);
  101.     merge_sort(a,0,n-1,ch);
  102.     printarray(a,n);
  103.     }
  104.    
  105. }
Add Comment
Please, Sign In to add comment