-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrecursionsort.c
84 lines (71 loc) · 1.3 KB
/
recursionsort.c
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
75
76
77
78
79
80
81
82
83
#include<stdio.h>
int arr[] = {78,67,56,45,34,23};
int n = sizeof(arr) / sizeof(arr[0]);
int *recursionsort();
int getMin();
int main(){
printf("Array Length calculated %d \n",n);
printf("smallest element is %d \n",getMin(arr,n));
printf("unsorted array is : ");
int q;
for(q=0;q<n;q++){
printf(" %d",arr[q]);
}
printf("\n");
int *mysortedarr;
mysortedarr = recursionsort(arr,n);
printf("sorted array is : ");
int m;
for(m=0;m<n;m++){
printf(" %d",mysortedarr[m]);
}
printf(" ");
return 0;
}
int getMin(int arr[],int length){
if(length == 1){
return arr[0];
}
else{
int newarr[length - 1] ;
int i;
for(i=1;i<length;i++){
newarr[i-1] = arr[i];
}
int newmin = getMin(newarr,(length - 1));
if(newmin > arr[0]){
return arr[0];
}
else{
return newmin;
}
}
}
int *recursionsort(int arr[],int length){
if(length==1){
return arr;
}
else{
int minimum = getMin(arr,length);
int newarr[length - 1] ;
int i,j=0;
for(i=0;i<length;i++){
if(arr[i]==minimum){
int temp = arr[0];
arr[0] = minimum;
arr[i]= temp ;
}
else{
newarr[j]=arr[i];
j++;
}
}
int *reducedsortedarr;
reducedsortedarr = recursionsort(newarr,(length - 1));
int k;
for(k=1;k<length;k++){
arr[k]=reducedsortedarr[k-1];
}
return arr;
}
}