Skip to main content

How to Write Merge Sort in C

               How to Write Merge Sort in C

#include<stdio.h>
/// Merge Sort
void merge(int arr[],int l,int m,int r);
void merge_sort(int arr[],int l,int r);
void print_arr(int arr[],int size);
void merge_sort(int arr[],int l,int r){
    if(l<r){
        int m=(l+r)/2;
        merge_sort(arr,l,m);
        merge_sort(arr,m+1,r);
        merge(arr,l,m,r);
    }
}
void merge(int arr[],int l,int m,int r){
    int i,j,k;
    int n1=m-l+1;
    int n2=r-m;
    int L[n1];
    int R[n2];
    for(int i=0;i<n1;i++){
        L[i]=arr[l+i];
    }
    for(int j=0;j<n2;j++){
        R[j]=arr[m+1+j];
    }
    i=0;
    j=0;
    k=l;
    while(i<n1 && j<n2){
        if(L[i]<=R[j]){
            arr[k]=L[i];
            i++;
        }
        else{
            arr[k]=R[j];
            j++;
        }
        k++;
    }
    while(i<n1){
        arr[k]=L[i];
        i++;
        k++;
    }
    while(j<n2){
        arr[k]=R[j];
        j++;
        k++;
    }

}

void print_arr(int arr[],int size){
    for(int i=0;i<size;i++){
        printf("%d ",arr[i]);
    }
    printf("\n");

}
int main(){

   int arr[]={11,9,7,2,5,15};
   int size_arr=sizeof(arr)/sizeof(arr[0]);
   printf("Before Array: ");
   print_arr(arr,size_arr);
   merge_sort(arr,0,size_arr-1);
   printf("After Sorted Array; ");
   print_arr(arr,size_arr);


    return 0;
}

Comments

Popular posts from this blog

C program to count total number of notes in given amount

 #include <iostream> using namespace std; int main() {     // 500,100,50,20,10,5,2,1     int n;     int count1,count2,count3,count4,count5,count6,count7,count8;     count1=count2=count3=count4=count5=count6=count7=count8=0;     cin>>n;         if(n>=500){           count1=n/500;           n=n%500;         }         if(n>=100){             count2=n/100;             n=n%100;         }         if(n>=50){             count3=n/50;       ...

Divide and conquer min max

          Divide and conquer min max  #include<stdio.h> #include<stdio.h> int max, min; int a[100]; void maxmin(int i, int j) {  int max1, min1, mid;  if(i==j)  {   max = min = a[i];  }  else  {   if(i == j-1)   {    if(a[i] >a[j])    {     max = a[i];     min = a[j];    }    else    {     max = a[j];     min = a[i];    }   }   else   {    mid = (i+j)/2;    maxmin(i, mid);    max1 = max; min1 = min;    maxmin(mid+1, j);    if(max <max1)     max = max1;    if(min > min1)     min = min1;   }  } } int main () {  int i, num;  printf ("\nEnter the total number of numbers : ");  scanf ("%d",&num);  printf ("Enter the numbers : \n");  for (i=1;i<=num;i++)  ...