- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我正在尝试实现合并排序,我在概念上理解它,但显然在编程方面有很大困难(我没有经验)。我查阅了以前的帖子,这些帖子有帮助,但我无法超越这一点。我目前遇到以下错误:
13:20: error: âSizeâ was not declared in this scope mergesort(array[Size], low, mid);
41:20: error: invalid conversion from âintâ to âint*â [-fpermissive] mergesort(data[size], 0, size-1);
6:6: error: initializing argument 1 of â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]
到这个参数,它试图访问 int
来自 data
(尽管 size
在范围之外)。因此,编译器不知道如何转换 int
到 int*
- 它们是不同的类型。
请注意,以下代码不是标准 C++,因为不支持可变长度数组:
int size;
cin >> size;
int data[size];
也就是说,数组的大小需要在编译时知道,即size
不是。您可以改为使用 std::vector<int> data(size);
.
此外,您对 merge
的声明和定义不匹配 - 一个需要 int
作为它的第一个参数,而另一个接受 int[]
.
关于c++ - 实现归并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28172290/
本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下: 1. 冒泡排序: ?
1.冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 算法步
前言 平时用惯了高级语言高级工具高级算法,难免对一些基础算法感到生疏。但最基础的排序算法中实则蕴含着相当丰富的优化思维,熟练运用可起到举一反三之功效。 选择排序 选择排序几乎是
我是一名优秀的程序员,十分优秀!