Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void merge(int a[],int sizeA,int b[],int sizeB, int c[]);
- void mergeSort(int arr[],int low, int high);
- int main()
- {
- int c[4] = {6,4,8,1};
- int i;
- mergeSort(c,0,3);
- for(i = 0; i < 4; i++)
- printf("%d,",c[i]);
- return 0;
- }
- void merge(int a[],int sizeA,int b[],int sizeB, int c[])
- {
- int indexA = 0,indexB = 0,indexC = 0;
- while(indexA<sizeA && indexB<sizeB)
- {
- if (a[indexA]>b[indexB])
- {
- c[indexC] = b[indexB];
- indexB++;
- indexC++;
- }else
- {
- c[indexC] = a[indexA];
- indexA++;
- indexC++;
- }
- }
- while(indexA<sizeA)
- {
- c[indexC]=a[indexA];
- indexA++;
- indexC++;
- }
- while(indexB<sizeB)
- {
- c[indexC]=b[indexB];
- indexB++;
- indexC++;
- }
- }
- void mergeSort(int arr[],int low, int high)
- {
- int mid = (high+low)/2,i;
- int *tempArr;
- if (high==low)
- return;
- tempArr = (int*) malloc((high-low+1)*sizeof(int));
- mergeSort(arr,low,mid);
- mergeSort(arr,mid+1,high);
- merge(arr+low,mid+1-low,arr+mid+1,high-mid,tempArr);
- for (i=0; i <high-low+1; i++)
- {
- arr[i+low] = tempArr[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement