Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void merge(int a[],int sizeA,int b[],int sizeB, int c[]);
  5. void mergeSort(int arr[],int low, int high);
  6.  
  7. int main()
  8. {
  9.  
  10. int c[4] = {6,4,8,1};
  11. int i;
  12. mergeSort(c,0,3);
  13. for(i = 0; i < 4; i++)
  14. printf("%d,",c[i]);
  15.  
  16. return 0;
  17. }
  18.  
  19. void merge(int a[],int sizeA,int b[],int sizeB, int c[])
  20. {
  21. int indexA = 0,indexB = 0,indexC = 0;
  22. while(indexA<sizeA && indexB<sizeB)
  23. {
  24. if (a[indexA]>b[indexB])
  25. {
  26. c[indexC] = b[indexB];
  27. indexB++;
  28. indexC++;
  29. }else
  30. {
  31. c[indexC] = a[indexA];
  32. indexA++;
  33. indexC++;
  34. }
  35. }
  36. while(indexA<sizeA)
  37. {
  38. c[indexC]=a[indexA];
  39. indexA++;
  40. indexC++;
  41. }
  42. while(indexB<sizeB)
  43. {
  44. c[indexC]=b[indexB];
  45. indexB++;
  46. indexC++;
  47. }
  48.  
  49.  
  50. }
  51.  
  52. void mergeSort(int arr[],int low, int high)
  53. {
  54. int mid = (high+low)/2,i;
  55. int *tempArr;
  56. if (high==low)
  57. return;
  58.  
  59. tempArr = (int*) malloc((high-low+1)*sizeof(int));
  60.  
  61. mergeSort(arr,low,mid);
  62. mergeSort(arr,mid+1,high);
  63. merge(arr+low,mid+1-low,arr+mid+1,high-mid,tempArr);
  64. for (i=0; i <high-low+1; i++)
  65. {
  66. arr[i+low] = tempArr[i];
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement