Так что я пытаюсь объединить 2 отсортированных массива в один, и я получаю действительно странные числа, такие как вывод. Вот мой код:C++ Объединение 2 отсортированных массивов в 1 отсортированный
#include<iostream>
using namespace std;
int* add(int first[],int second[], int sizeFirst, int sizeSecond)
{
int result[sizeFirst + sizeSecond];
int indexFirst = 0,indexSecond = 0;
for(int i = 0;i < sizeFirst + sizeSecond;i++)
{
if(indexFirst == sizeFirst || first[indexFirst] > second[indexSecond])
{
result[i] = second[indexSecond];
indexSecond++;
}
else
{
result[i] = first[indexFirst];
indexFirst++;
}
}
return result;
}
int main()
{
int n;
cin>>n;
int arr[n];
for(int i = 0;i < n;i ++)
cin>>arr[i];
int m;
cin>>m;
int arr2[m];
for(int i = 0;i < m;i ++)
cin>>arr2[i];
int *res;
res = add(arr,arr2,n,m);
for(int i = 0;i < n + m;i ++)
cout<<res[i]<<" ";
return 0;
}
Примечания: Он сортирует его правильно, поэтому ошибки там нет. Также мне нужно сделать это как функцию, потому что мне понадобится это позже для некоторых других вещей.
Есть ли причина, по которой вы не просто используете ['std :: merge'] (http://en.cppreference.com/w/cpp/algorithm/merge)? – Wintermute
@Wintermute Я хотел бы запрограммировать его сам для практики –
как в аду этот код даже скомпилирован с 'int result [sizeFirst + sizeSecond];'? – Guiroux