Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void merge_sort(int* arr, int left_b, int right_b) {
- int temp;
- if (left_b < right_b)
- if (right_b - left_b == 1) {
- if (arr[left_b] > arr[right_b]) {
- temp = arr[right_b];
- arr[right_b] = arr[left_b];
- arr[left_b] = temp;
- }
- }
- else {
- merge_sort(arr, left_b, left_b + (right_b - left_b) / 2);
- merge_sort(arr, left_b + (right_b - left_b) / 2 + 1, right_b);
- int* dop = new int[right_b];
- int left_start = left_b;
- int mid = left_b + (right_b - left_b) / 2;
- int right_start = mid + 1;
- int sok = 0;
- while (left_start <= mid && right_start <= right_b) {
- if (arr[left_start] < arr[right_start]) {
- dop[sok] = arr[left_start];
- ++left_start;
- }
- else {
- dop[sok] = arr[right_start];
- ++right_start;
- }
- ++sok;
- }
- while (left_start <= mid) {
- dop[sok] = arr[left_start];
- ++left_start;
- ++sok;
- }
- while (right_start <= right_b) {
- dop[sok] = arr[right_start];
- ++right_start;
- ++sok;
- }
- for (int k = 0; k < sok; ++k) {
- arr[left_b + k] = dop[k];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement