-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmergesort.cpp
74 lines (71 loc) · 1.39 KB
/
mergesort.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include<iostream>
using namespace std;
void merge(int arr[], int l, int m, int r)
{
int i = l;
int j = m+1;
int k = l;
int temp[10];
while(i<=m && j<=r)
{
if(arr[i] < arr[j]) //if left sub-array element is greater
{
temp[k] = arr[i];
i++;
k++;
}
else //if right sub-array element is greater
{
temp[k] = arr[j];
j++;
k++;
}
}
while (i <= m)
{
temp[k] = arr[i];
i++;
k++;
}
while(j <= r)
{
temp[k] = arr[j];
j++;
k++;
}
for(int s = l;s <= r; s++) //moving elements from temp to arr
{
arr[s] = temp[s];
}
}
void mergeSort(int arr[], int l, int r)
{
if(l < r)
{
int m = (l + r) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m+1, r);
merge(arr, l, m, r);
}
}
int main()
{
cout<<"\nEnter elements to sort in ranodm order: ";
int array[10];
for(int b = 0; b < 10; b++)
{
cin>>array[b];
}
cout<<"\nBEFORE sorting: ";
for(int b = 0; b < 10; b++)
{
cout<<array[b]<<" ";
}
mergeSort(array, 0, 9);
cout<<"\nAFTER sorting: ";
for(int b = 0; b < 10; b++)
{
cout<<array[b]<<" ";
}
return 0;
}