Merge sort

From , 5 Years ago, written in C++, viewed 80 times.
URL https://pastebin.vip/view/634841a6
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void printArray(int* arr, int len);
  6. bool mSort(int *arr, int len);
  7. void mergeArray(int *arr, int first, int mid, int last, int *temp);
  8. void mergeSort(int *arr, int first, int last, int temp[]);
  9.  
  10. int main()
  11. {
  12.         int arr[] = {1, 4, 3, 10, 4, 7, 2, 5};
  13.         int len = sizeof(arr)/sizeof(*arr);
  14.  
  15.         printArray(arr, len);
  16.         mSort(arr, len);
  17.         printArray(arr, len);
  18.  
  19.         cin.get();
  20.         return 0;
  21. }
  22.  
  23. void mergeArray(int *arr, int first, int mid, int last, int *temp)
  24. {
  25.         int i = first, j = mid + 1;
  26.         int m = mid, n = last;
  27.         int k = 0;
  28.  
  29.         while(i <= m && j <= n)
  30.         {
  31.                 if(arr[i] <= arr[j])
  32.                         temp[k++] = arr[i++];
  33.                 else
  34.                         temp[k++] = arr[j++];
  35.         }
  36.  
  37.         while(i <= m)
  38.                 temp[k++] = arr[i++];
  39.  
  40.         while(j <= n)
  41.                 temp[k++] = arr[j++];
  42.  
  43.         for(i = 0; i < k; i++)
  44.                 arr[i + first] = temp[i];
  45. }
  46.  
  47. void mergeSort(int *arr, int first, int last, int *temp)
  48. {
  49.         if(first < last)
  50.         {
  51.                 int mid = (first + last)/2;
  52.                 mergeSort(arr, first, mid, temp);
  53.                 mergeSort(arr, mid+1, last, temp);
  54.                 mergeArray(arr, first, mid, last, temp);
  55.         }
  56. }
  57.  
  58. bool mSort(int *arr, int len)
  59. {
  60.         int *temp = new int[len];
  61.         if(temp == NULL)
  62.                 return false;
  63.         mergeSort(arr, 0, len -1, temp);
  64.  
  65.         delete[] temp;
  66.         return true;
  67. }
  68.  
  69. void printArray(int* arr, int len)
  70. {
  71.         for(int i = 0; i < len; i++)
  72.         {
  73.                 cout << arr[i] << " ";
  74.         }
  75.         cout << endl;
  76. }
  77. //cpp/8814

Reply to "Merge sort"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website