View difference between Paste ID: jdYHFtaU and KZLZibwe
SHOW: | | - or go back to the newest paste.
1
#include<stdio.h>
2
#include<limits.h>
3
4
int a[1000];
5
int n ;
6
7
void input();
8
void output();
9
void Merge_Sort(int [] , int , int);
10
void Merge(int[] , int , int , int);
11
12
13
int main()
14
{
15
16
     input();
17
     Merge_Sort(a,1,n);
18
     output();
19
20
}
21
22
void input()
23
{
24
     printf("How many numbers:");
25
     scanf("%d",&n);
26
27
     printf("Insert numbers:\n");
28
29
     int i;
30
31
     for(i=1 ; i<=n ; i++)
32
     {
33
         scanf("%d",&a[i]);
34
     }
35
}
36
37
void Merge_Sort(int arr[],int mn , int mx)
38
{
39
     if(mn < mx)
40
     {
41
          int mid = ((mn + mx) / 2);
42
43
          Merge_Sort(arr , mn , mid);
44
          Merge_Sort(arr , mid+1 , mx);
45
          Merge(arr , mn , mid , mx) ;
46
     }
47
}
48
49
void Merge(int arr[] , int mn , int mid , int mx)
50
{
51
     int n1=mid - mn + 1 ;
52
     int n2=mx-mid ;
53
54
     int L[n1 + 1] , R[n2 + 1];
55
56
     for(int i=1 ; i<=n1 ; i++)
57
     {
58
          L[i] = arr[mn + i -1 ] ;
59
     }
60
61
     for(int j=1 ; j<=n2 ; j++)
62
     {
63
          R[j] = arr[mid + j];
64
     }
65
66
     L[n1 + 1] = INT_MAX ;
67
     R[n2 + 1] = INT_MAX ;
68
69
       int i=1 , j=1 ;
70
71
     for(int k=mn ; k<=mx ; k++)
72
     {
73
          if(L[i]<R[j])
74
          {
75
               a[k]=L[i];
76
               i++;
77
          }
78
          else
79
          {
80
               a[k]=R[j];
81
               j++;
82
          }
83
     }
84
}
85
86
87
void output()
88
{
89
     printf("\nSorted array:");
90
91
     for(int i=1 ; i<=n ; i++)
92
     {
93
          printf("%d ",a[i]);
94
     }
95
}