Advertisement
Guest User

mergeSort

a guest
Apr 1st, 2013
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. void mergeSplit (short* array, short startP, short endP);
  2. void merge (short* arr,short sP, short mP, short eP);
  3.  
  4. void mergeSort (short* arr, short size)
  5. {
  6.    mergeSplit (arr,0,(size-1));
  7. }
  8.  
  9. void mergeSplit (short* array, short startP, short endP)
  10. {
  11.    if (startP < endP)
  12.    {
  13.       short midP = (startP + endP) / 2;
  14.       mergeSplit (array, startP, midP);
  15.       mergeSplit (array, midP+1, endP);
  16.       merge (array, startP, midP, endP);
  17.    }
  18. }
  19.  
  20. void merge (short* array, short sP, short mP, short eP)
  21. {
  22.    short left_iter = sP;
  23.    short right_iter = mP+1;
  24.    short temp_iter = 0;
  25.    
  26.    short* tempArr = new short[(eP-sP)+1];
  27.    
  28.    while (left_iter <= mP && right_iter <= eP)
  29.    {
  30.       if (array[left_iter] <= array[right_iter])
  31.       {
  32.          tempArr[temp_iter] = array[left_iter];
  33.          ++left_iter;
  34.       }
  35.      
  36.       else
  37.       {
  38.          tempArr[temp_iter] = array[right_iter];
  39.          ++right_iter;
  40.       }
  41.      
  42.       ++temp_iter;
  43.    }
  44.    
  45.    if (left_iter > mP && right_iter <= eP)
  46.    {
  47.       for (; right_iter <= eP; ++right_iter)
  48.       {
  49.          tempArr[temp_iter] = array[right_iter];
  50.          ++temp_iter;
  51.       }
  52.    }
  53.    
  54.    else
  55.    {
  56.       if (right_iter > eP && left_iter <= mP)
  57.       {
  58.          for (; left_iter <= mP; ++left_iter)
  59.          {
  60.             tempArr[temp_iter] = array[left_iter];
  61.             ++temp_iter;
  62.          }
  63.       }
  64.    }
  65.    
  66.    for (short var = sP; var <= eP; ++var) array[var] = tempArr[var];
  67.    delete[] tempArr;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement