我一直在尝试做一个合并排序代码,但是这个错误消息一直显示出来。它说“预期常量表达式”即使大小在主函数中是不变的。我试图解决它,但我不能。我该怎么办 ?“期望常量表达式”错误
#include<iostream>
using namespace std;
void merge(int data[], int size, int first, int mid, int last);
void mergeSort(int data[], int size, int first /*low*/, int last/*high*/)
{
if(first<last)
{
//sort each half
int mid = (first + last)/2;
//index of midpoint
//sort left half the array [first .... mid]
mergeSort(data, size, first, mid);
//sort right half of the array [mid+1 ..... last]
mergeSort(data, size, mid+1, last);
//merge the two halves
merge(data, size, first, mid, last);
}
}
void merge(int data[], int size, int first, int mid, int last)
{
int tempArr[size];
int i=first;
int j=mid+1;
int k=first;
while (i<=mid && j<=last)
{
if (tempArr[i] <= tempArr[j])
{
data[k]=tempArr[i];
}
else
{
data[k] = tempArr[j];
++j;
}
++k;
}
while (i <= mid)
{
data[k] = tempArr[i];
++k;
++i;
}
}
int main()
{
const int size = 10;
int arr[size] = {1, 0, 6, 15, 30, 56, 23, 3, 7, 10};
mergeSort(arr, size, 0, size);
for(int i=0; i<size; i++)
{
cout<< arr[i]<<" ";
}
system("pause");
return 0;
}
您声明了'int tempArr [size];'但是在调用它的元素之前初始化了它。 –
但我在主要功能。我甚至试图把它放在使用namespace std;所以它会是全球仍然是相同的错误 – magician