Merge Sort Ada
Merge Sort Ada
IF p < r
THEN q = FLOOR [(p + r)/2]
MERGE (A, p, q)
MERGE (A, q + 1, r)
MERGE (A, p, q, r)
MERGE (A, p, q, r )
1.
n1 q p + 1
2.
n2 r q
3.
Create arrays L[1 . . n1 + 1] and R[1 . . n2 + 1]
4.
FOR i 1 TO n1
5.
DO L[i] A[p + i 1]
6.
FOR j 1 TO n2
7.
DO R[j] A[q + j ]
8.
L[n1 + 1]
9.
R[n2 + 1]
10. i 1
11. j 1
12. FOR k p TO r
13.
DO IF L[i ] R[ j]
14.
THEN A[k] L[i]
15.
ii+1
16.
ELSE A[k] R[j]
17.
jj+1
T(n) = (n lg n).
Implementation
1.
#include <iostream>
2.
3.
#include <conio.h>
4.
#include<time.h>
5.
#include<dos.h>
6.
7.
8.
9.
int mid;
10.
11.
12.
mid=(low+high)/2;
13.
mergesort(a,low,mid);
14.
mergesort(a,mid+1,high);
15.
merge(a,low,high,mid);
16.
17.
return;
18.
19.
20.
21.
int i, j, k, c[50];
22.
i = low;
23.
k = low;
24.
j = mid + 1;
25.
26.
27.
28.
29.
c[k] = a[i];
30.
k++;
31.
i++;
32.
33.
else
34.
35.
c[k] = a[j];
36.
k++;
37.
j++;
38.
39.
40.
41.
42.
c[k] = a[i];
43.
k++;
44.
i++;
45.
46.
47.
48.
c[k] = a[j];
49.
k++;
50.
j++;
51.
52.
53.
54.
a[i] = c[i];
55.
56.
57.
int main()
58.
59.
Clock_t start,end;
60.
61.
62.
63.
64.
65.
66.
67.
cin>>a[i];
}
Start=clock();
mergesort(a, 0, 4);
68.
End=clock();
69.
cout<<"sorted array\n";
70.
71.
72.
cout<<a[i];
73.
74.
}
Cout<<the time taken by algorithm is:<<(end-start)/CLK_TCK;
75.
76.
getch();
}
Worst case:
Best case