【发布时间】:2010-10-20 07:34:59
【问题描述】:
我正在编写一个合并排序函数,而现在我只是在使用一个测试用例数组(没有输入 - 目前是静态的)。我不知道如何将数组作为参数传递。这是我现在的代码:
//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++ 作为第一语言,并且只对语言的特性有一个基本的掌握。感谢您的帮助。
【问题讨论】:
-
mergeSort(originalarray[]) 格式不正确。您需要以下函数的定义 mergeSort(originalarray, arraySize);数组总是通过函数中的地址/引用传递,您还需要数组的大小来迭代它们。
标签: c++ arrays sorting mergesort divide-and-conquer