Я пишу функцию сортировки слиянием, и сейчас я просто использую массив тестовых случаев (пока нет ввода - пока что это статично). Я не знаю, как передать массив в качестве аргумента. Вот мой код прямо сейчас:
//merge sort first attempt
#include <iostream>
#include <algorithm>
#include <vector>
int mergeSort(int[]);
int main() {
int originalarray[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 10 };
mergeSort(originalarray[]);
}
int mergeSort(int[] originalarray) {
int num = (sizeof(originalarray) / sizeof(int));
std::vector < int > original(num);
if (num > 2) {
return num;
}
// Fill the array using the elements of originalarray
// This is just for demonstration, normally original will be a parameter,
// so you won't be filling it up with anything.
std::copy(originalarray, originalarray + num, original.begin());
// Create farray and sarray of the appropriate size
std::vector < int > farray(num / 2);
std::vector < int > sarray(num - farray.size());
// Fill those using elements from original
std::copy(original.begin(), original.begin() + farray.size(), farray.begin());
std::copy(original.begin() + farray.size(), original.end(), sarray.begin());
mergeSort(farray);
mergeSort(sarray);
}
Обратите внимание, что эта функция mergeSort не работает, так как я еще не выяснил, как их объединить (это мое назначение). Я хотел бы отсортировать два вектора, прежде чем иметь дело с этим, и я не могу скомпилировать это из-за необходимости передавать массив в качестве аргумента. Я не понимаю указателей, поэтому, если это решение, мое оправдание - невежество. Я изучаю программирование прямо сейчас, с C++ в качестве первого языка, и имею только базовые знания о языковых особенностях. Спасибо за помощь.