Friday, 4 November 2016

Program 5 - Merge Sort



#include <stdio.h>
void merge(int a[], int f, int mid, int l){
int i = f, j = mid + 1, k = 0, b[20];
while(i <= mid && j <= l){
if(a[i] <= a[j]){
b[k++] = a[i++];
} else if(a[i] > a[j]){
b[k++] = a[j++];
}
}
while(i <= mid){
b[k++] = a[i++];
}
while(j <= l){
b[k++] = a[l++];
}
for(i = f, k = 0; i <= l; i++, k++){
a[i] = b[k];
}
}
void merge_sort(int a[], int f, int l){
int mid;
if(f < l){
mid = (f + l) / 2;
merge_sort(a, f, mid);
merge_sort(a, mid + 1, l);
merge(a, f, mid, l);
}
}
int main(){
int i;
//Worst Case xD
int a[] = {4,3,2,1,0,-1,-2,-3,-4};
int n = sizeof(a)/ sizeof(a[0]);
merge_sort(a,0, n-1);
printf("The sorted array is: \n");
for(i = 0; i < n; i++){
printf("%d ", a[i]);
}
return 0;
}


























































































No comments:

Post a Comment