Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void mergeSplit (short* array, short startP, short endP);
- void merge (short* arr,short sP, short mP, short eP);
- void mergeSort (short* arr, short size)
- {
- mergeSplit (arr,0,(size-1));
- }
- void mergeSplit (short* array, short startP, short endP)
- {
- if (startP < endP)
- {
- short midP = (startP + endP) / 2;
- mergeSplit (array, startP, midP);
- mergeSplit (array, midP+1, endP);
- merge (array, startP, midP, endP);
- }
- }
- void merge (short* array, short sP, short mP, short eP)
- {
- short left_iter = sP;
- short right_iter = mP+1;
- short temp_iter = 0;
- short* tempArr = new short[(eP-sP)+1];
- while (left_iter <= mP && right_iter <= eP)
- {
- if (array[left_iter] <= array[right_iter])
- {
- tempArr[temp_iter] = array[left_iter];
- ++left_iter;
- }
- else
- {
- tempArr[temp_iter] = array[right_iter];
- ++right_iter;
- }
- ++temp_iter;
- }
- if (left_iter > mP && right_iter <= eP)
- {
- for (; right_iter <= eP; ++right_iter)
- {
- tempArr[temp_iter] = array[right_iter];
- ++temp_iter;
- }
- }
- else
- {
- if (right_iter > eP && left_iter <= mP)
- {
- for (; left_iter <= mP; ++left_iter)
- {
- tempArr[temp_iter] = array[left_iter];
- ++temp_iter;
- }
- }
- }
- for (short var = sP; var <= eP; ++var) array[var] = tempArr[var];
- delete[] tempArr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement