实现合并排序
Implementing Merge Sort
所以,我正在尝试实现合并排序,我在概念上理解,但显然在编程方面遇到了很大的困难(我非常缺乏经验)。我已经查找了以前的帖子,这有所帮助,但我无法超越这一点。我目前遇到以下错误:
13:20:错误:"大小"未在此范围内声明 合并排序(数组[大小],低,中);
41:20: 错误:从 "int" 到 âint*â 的转换无效 [-允许] mergesort(data[size], 0, size-1);
6:6: 错误:初始化 ́void mergesort(int*, int, int)â [-fpermissive] void mergesort(int array[], int low, int high)
我也对如何进行感到非常困惑。我真的不知道如何将所有内容重新合并在一起。这似乎不会这么困难,但递归真的让我感到困惑:/提前感谢您的帮助。
#include <iostream>
using namespace std;
void merge(int[], int, int, int);
void mergesort(int array[], int low, int high)
{
int mid;
if(low < high)
{
mid = low + (high-low)/2;
mergesort(array[Size], low, mid);
mergesort(array[Size], mid+1, high);
merge(array[Size], low, mid, high);
}
}
void merge(int array, int low, int mid, int high)
{
}
int main()
{
int size;
cin >> size;
int data[size];
for(int i = 0; i < size; i++)
{
cin >> data[i];
}
mergesort(data[size], 0, size-1);
}
data[Size]
尝试从数组中获取第 Size
个值 data
。 Size
不存在,我不认为这是你想要的。如果你想引用数组本身,只需使用它的名称:data
。
您稍后在 data[size]
上会遇到同样的问题,除了在这种情况下确实存在size
。错误消息告诉您它无法将int
转换为int*
。当你声明一个像int array[]
这样的函数参数时,它实际上只是int* array
的语法糖。您正在将data[size]
传递给此参数,该参数尝试从data
访问int
(尽管size
超出边界)。因此,编译器不知道如何将int
转换为int*
- 它们是不同的类型。
请注意,以下代码不是标准C++,因为不支持可变长度数组:
int size;
cin >> size;
int data[size];
也就是说,数组的大小需要在编译时知道,而size
则不知道。您可以改用std::vector<int> data(size);
.
此外,您对merge
的声明和定义不匹配 - 一个将int
作为其第一个参数,而另一个采用int[]
。
您似乎很难理解静态数组与动态数组。
我建议使用 std::vector 而不是你的数据[大小] 声明。
关于您的错误:
请注意,在您的合并排序函数中,您指的是未定义的 Size 。如果你想使用静态数组,我会建议如下:
#define SIZE 200
...
int data[SIZE];
这将允许您使用相同的 SIZE 来执行代码。
但是,您的数组不会是输入的大小。
如果要在运行时分配数组,则需要将代码从
int size;
cin >> size;
int data[size];
自
int size;
cin >> size;
int* data = new int[size];
然后,在你的合并排序函数中,你必须将大小作为参数传递。
- 使用C++程序合并排序没有得到正确的输出
- 用于合并排序的合并函数
- 合并排序不排序自创建数组类 c++
- 仅在大型阵列上出现合并排序分段错误
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- C++合并排序可视化工具
- 没有输出的合并排序我做错了什么?
- 字符串上的合并排序上的 Seg 错误
- 使用向量在 c++ 中合并排序实现
- 我无法让我的合并排序实现运行
- 合并链表上的排序
- 合并排序:分段错误核心转储
- 合并两个排序链表时运行时出错
- 在 C++ 中合并两个排序链表
- 合并排序中的错误计数:计数反转
- C++ 多线程 - 与线程合并排序的算法替代
- C++中合并排序算法的奇怪行为
- 合并排序没有给我任何输出
- C++ 中的合并排序
- C++:合并排序合并数组