Skip to main content

Merge Sort in C

#include<stdio.h>

void merge(int arr[],int l,int mid,int r){
    int n1=mid-l+1;
    int n2=r-mid;
    int L[n1],R[n2];
    int i=0,j=0,k=0;
    for(i=0;i<n1;i++){
        L[i]=arr[l+i];
    }
    for(j=0;j<n2;j++){
        R[j]=arr[mid+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 mergesort(int arr[],int l,int r){
    int mid=0;
    if(l<r){
        mid=l+(r-l)/2;
        mergesort(arr,l,mid);
        mergesort(arr,mid+1,r);
        merge(arr,l,mid,r);
    }
   // printf("%d\n",r);
}

int main()
{
    int arr[]={8,5,7,2,0,3};
    int i=0;
    int r=0;
    r=sizeof(arr)/sizeof(int);
    mergesort(arr,0,r-1);
    for(i=0;i<r;i++){
        printf("%d\t",arr[i]);
    }
    printf("\n");
    return 0;
}

Comments

Popular posts from this blog

BitWise Operators Explained in Short

Bitwise Operators :    Bitwise Operators do not operate on decimal value of the Number. They first convert the numbers into binary value & then they operate on it. Bitwise opeartors are not used with floating type variables. Bitwise AND :-   & Bitwise OR    :-   | Bitwise XOR :-   ^ Bitwise NOT :-   ~ LEFT SHIFT :- << RIGHT SHIFT :- >> Bitwise AND  & Example : N1 = 10 , N2 = 15 N1 & N2 In Binary  :                                                  0 0 1 0 1 0                                                   0 0 1 1 1 1  ...

Insertion Sort in C

#include<stdio.h> int main() {     int arr[]={8,5,7,4,3,0};     int n = sizeof(arr)/sizeof(int);     int key=0,i=0,j=0;     for(i=1;i<n;i++){         key=arr[i];         j=i-1;         while(j>=0 && arr[j]>key){             arr[j+1]=arr[j];             j--;         }         arr[j+1]=key;     }      for(i=0;i<n;i++){         printf("%d\t",arr[i]);     }     printf("\n");     return 0; }

Activity Selection Problem in Short

Activity Selection Problem is used extensively. Suppose a person is given n activities with their start & finish time. Select the maximum number of activities that can be performed by a single person, assuming that a person can only work on a single activity at a time. Greedy Approach:  set n equal to the max finish time  initialize set of selected activity with a 1    set k=1 loop m=2 to n    if start time of current activity is greater than the finish time of last activity            add the current activity to selected activity           set k=m