При объединении массивов, вторая часть итогового не может отсортироваться

Задача: Даны два одномерных массива вещественных чисел А[N] и B[М].Используя функции переписать их в новый общий массив, упорядочив по возрастанию.

#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "");
    int n, m;
    cout << "Введите размерность массивов: ";
    cin >> n >> m; // Вводим количество элементов в массивах
int* a = new int[n]; // Создаём динамические массивы
int* b = new int[m];

for (int i = 0; i < n; i++)
{
    cin >> a[i];
}

for (int i = 0; i < m; i++)
{
    cin >> b[i];
}
int* result = new int[n + m];
int i = 0, j = 0;
int index = 0;
while (i < n && j < m) // Обработка всех элементов, обновляем индексы
{
    if (a[i] < b[j])
    {
        result[index] = a[i]; i++;
    }
    else
    {
        result[index] = b[j]; j++;
    }
    index++;
}
while (i < n)
{
    result[index] = a[i];
    index++;  i++;
}
while (j < m)
{
    result[index] = b[j];
    index++; j++;
}
int left = 0;
int right = n - 1;
while (left < right) // Шейкерная сортировка
{
    for (int i = left; i < right; i++)
    {
        if (result[i] > result[i + 1])
        {
            int temp = result[i];
            result[i] = result[i + 1];
            result[i + 1] = temp;
        }
    }
    right--;
    for (int i = right; i > left; i--)
    {
        if (result[i] < result[i - 1])
        {
            int temp = result[i];
            result[i] = result[i - 1];
            result[i - 1] = temp;
        }
    }
    left++;
}
for (int k = 0; k < n + m; k++) // Вывод итогового массива
{
    cout << result[k] << ' ';
}
system("PAUSE");
return 0;

}

При такой сортировке сортируется лишь кол-во элементов первого массива, а второго никак. В чём проблема?


Ответы (0 шт):