Skip to content

Commit 4d2eef2

Browse files
authored
Clock Sort
Sorts given array of integers in ascending order using clock sort and shows the time taken for sorting. Also contains merge sort function.
1 parent 79c69c8 commit 4d2eef2

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

Clock Sort

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
void display(int *array, int size) {
5+
for(int i = 0; i<size; i++)
6+
cout << array[i] << " ";
7+
cout << endl;
8+
}
9+
void merge(int *array, int l, int m, int r)
10+
{
11+
int i, j, k, nl, nr;
12+
nl = m-l+1;
13+
nr = r-m;
14+
int larr[nl], rarr[nr];
15+
16+
for(i = 0; i<nl; i++)
17+
larr[i] = array[l+i];
18+
19+
for(j = 0; j<nr; j++)
20+
rarr[j] = array[m+1+j];
21+
22+
i = 0; j = 0; k = l;
23+
24+
while(i < nl && j<nr)
25+
{
26+
if(larr[i] <= rarr[j])
27+
{
28+
array[k] = larr[i];
29+
i++;
30+
}
31+
else
32+
{
33+
array[k] = rarr[j];
34+
j++;
35+
}
36+
k++;
37+
}
38+
39+
while(i<nl)
40+
{
41+
array[k] = larr[i];
42+
i++; k++;
43+
}
44+
while(j<nr)
45+
{
46+
array[k] = rarr[j];
47+
j++; k++;
48+
}
49+
}
50+
51+
void mergeSort(int *array, int l, int r)
52+
{
53+
int m;
54+
if(l < r) {
55+
int m = l+(r-l)/2;
56+
mergeSort(array, l, m);
57+
mergeSort(array, m+1, r);
58+
merge(array, l, m, r);
59+
}
60+
}
61+
62+
int main() {
63+
int n;
64+
cin >> n;
65+
int arr[n];
66+
for(int i = 0; i<n; i++) {
67+
cin >> arr[i];
68+
}
69+
clock_t start,end;
70+
71+
start = clock();
72+
mergeSort(arr, 0, n-1);
73+
end = clock();
74+
double time_taken = double(end - start) / double(CLOCKS_PER_SEC);
75+
cout<<"Time Taken "<<time_taken<<endl;
76+
cout << "After Sorting: "<<endl;
77+
display(arr, n);
78+
}

0 commit comments

Comments
 (0)