fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. void merge(int *arr, int size, int first, int middle, int last)
  7. {
  8. int temp[size];
  9. for(int i = first; i<=last; i++)
  10. temp[i] = arr[i];
  11. int i=first, j=middle+1, k=first; // 1st Change, Set k to first instead of 0
  12. while(i<=middle && j<=last)
  13. {
  14. if(temp[i] <= temp[j])
  15. arr[k++] = temp[i++];
  16. else
  17. arr[k++]=temp[j++]; // 2nd Change, use j instead of i
  18. }
  19. while(i<=middle)
  20. arr[k++]=temp[i++];
  21. while(j<=last) // 3rd Change you missed this case
  22. arr[k++]=temp[j++];
  23. }
  24.  
  25. void mergesort(int *arr, int size, int first, int last)
  26. {
  27. if(first<last)
  28. {
  29. int middle = ( first + last )/2;
  30. mergesort(arr,size,first,middle);
  31. mergesort(arr,size,middle+1,last);
  32. merge(arr,size,first,middle,last);
  33. }
  34. }
  35. int main()
  36. {
  37. cout <<"Him";
  38. const int size = 10;
  39. int numbers [] = {5,10,1,6,2,9,3,8,7,4};
  40. mergesort(numbers,size,0,9);
  41. for( int i= 0; i<size; ++i)
  42. {
  43. cout << numbers[i] << " ";
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0s 4568KB
stdin
Standard input is empty
stdout
Him1 2 3 4 5 6 7 8 9 10