1
+ = == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =
2
+ /*TIME COMPLEXITY
3
+ Merge Sort*/
4
+
5
+ #include <stdio.h>
6
+ #include <time.h>
7
+
8
+ void mergeSort (int [], int , int , int ); //Merge sort function declaration
9
+ void partition (int [],int , int ); //Partition function declaration
10
+
11
+ int main ()
12
+ {
13
+ int list [50 ];
14
+ clock_t start ,end ;
15
+ double time ;
16
+ int i , size ;
17
+ printf ("Enter total number of elements:" );
18
+ scanf ("%d" , & size );
19
+ printf ("Enter the elements:\n" );
20
+ for (i = 0 ; i < size ; i ++ )
21
+ {
22
+ scanf ("%d" , & list [i ]);
23
+ }
24
+ start = clock (); //start time of clock
25
+ partition (list , 0 , size - 1 ); //calling of the partation function
26
+ end = clock (); //end time of clock
27
+ time = (double )(start - end )/CLOCKS_PER_SEC ; //calculation of time taken
28
+ printf ("After merge sort:\n" );
29
+ printf ("Time taken by merge sort is %f" ,time );
30
+ for (i = 0 ;i < size ; i ++ )
31
+ {
32
+ printf ("%d " ,list [i ]);
33
+ }
34
+ return 0 ;
35
+ }
36
+
37
+ void partition (int list [],int low ,int high ) //Partition function definition
38
+ {
39
+ int mid ;
40
+ if (low < high )
41
+ {
42
+ mid = (low + high ) / 2 ;
43
+ partition (list , low , mid ); //Recurrsive calling
44
+ partition (list , mid + 1 , high ); //Recurrsive calling
45
+ mergeSort (list , low , mid , high ); //Merge sort function calling
46
+ }
47
+ }
48
+
49
+ void mergeSort (int list [],int low ,int mid ,int high ) //Merge sort function definition
50
+ {
51
+ int i , mi , k , lo , temp [50 ];
52
+ lo = low ;
53
+ i = low ;
54
+ mi = mid + 1 ;
55
+ while ((lo <= mid ) && (mi <= high ))
56
+ {
57
+ if (list [lo ] <= list [mi ])
58
+ {
59
+ temp [i ] = list [lo ];
60
+ lo ++ ;
61
+ }
62
+ else
63
+ {
64
+ temp [i ] = list [mi ];
65
+ mi ++ ;
66
+ }
67
+ i ++ ;
68
+ }
69
+ if (lo > mid )
70
+ {
71
+ for (k = mi ; k <= high ; k ++ )
72
+ {
73
+ temp [i ] = list [k ];
74
+ i ++ ;
75
+ }
76
+ }
77
+ else
78
+ {
79
+ for (k = lo ; k <= mid ; k ++ )
80
+ {
81
+ temp [i ] = list [k ];
82
+ i ++ ;
83
+ }
84
+ }
85
+
86
+ for (k = low ; k <= high ; k ++ )
87
+ {
88
+ list [k ] = temp [k ];
89
+ }
90
+ }
91
+
92
+ = == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
0 commit comments