При объединении массивов, вторая часть итогового не может отсортироваться
Задача: Даны два одномерных массива вещественных чисел А[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;
}
При такой сортировке сортируется лишь кол-во элементов первого массива, а второго никак. В чём проблема?