C++ 错误:函数调用中只有两个参数
我正在开发一个程序,该程序测量合并排序需要多少秒来排序随机元素,我根据这里的代码: 我得到一个错误,说mergesort(0,长度-1);有“调用中的两个少数参数”C++ 错误:函数调用中只有两个参数,c++,C++,我正在开发一个程序,该程序测量合并排序需要多少秒来排序随机元素,我根据这里的代码: 我得到一个错误,说mergesort(0,长度-1);有“调用中的两个少数参数” #包括 #包括 #包括 #包括 无效合并排序(int list[],int i,int j);无效合并(int list[],int i1,int j1,int i2,int j2); 长长度=1000;const long max_length=3000; 整数列表[最大长度]; 无效读取(){ ifstream fin(“r
#包括
#包括
#包括
#包括
无效合并排序(int list[],int i,int j);无效合并(int list[],int i1,int j1,int i2,int j2);
长长度=1000;const long max_length=3000;
整数列表[最大长度];
无效读取(){
ifstream fin(“rand.dat”,ios::binary);
用于(长i=0;i 如果(imergesort
接受3个参数;您只传递2个参数。第一个参数应该是数组。编译器在哪一行报告错误?您可以创建一个最小的工作示例吗?@Svaberg错误来自以下内容:read();t1=clock();mergesort(0,length-1);t2=clock();我是否可以添加一个数组作为第一个参数,但现在我遇到了一个错误,错误是“Expression syntax”在添加数组后是否可以显示mergesort()的新调用应该是mergesort(list,0,length-1);因为外部数组也被称为list@JasonLang它成功了。现在没有错误。但是程序没有编译。T\T
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <time.h>
void mergesort(int list[],int i,int j); void merge(int list[],int i1,int j1,int i2,int j2);
long length = 1000; const long max_length = 3000;
int list[max_length];
void read() {
ifstream fin("rand.dat", ios::binary);
for (long i = 0; i < length; i++)
{ fin.read((char*)&list[i], sizeof(int));
}
fin.close(); }
void mergesort(int list[],int i,int j) {
int mid;
if(i<j)
{
mid=(i+j)/2;
mergesort(list,i,mid); //left recursion
mergesort(list,mid+1,j); //right recursion
merge(list,i,mid,mid+1,j); //merging of two
sorted sub-arrays
} } void merge(int list[],int i1,int j1,int i2,int j2) {
int temp[1000]; //array used for merging
int i,j,k;
i=i1; //beginning of the first list
j=i2; //beginning of the second list
k=0;
while(i<=j1 && j<=j2) //while elements in both lists
{
if(list[i]<list[j])
temp[k++]=list[i++];
else
temp[k++]=list[j++];
}
while(i<=j1) //copy remaining elements of the first
list
temp[k++]=list[i++];
while(j<=j2) //copy remaining elements of the second
list
temp[k++]=list[j++];
//Transfer elements from temp[] back to a[]
for(i=i1,j=0;i<=j2;i++,j++)
list[i]=temp[j]; } int main() {
double t1, t2;
read();
t1 = clock();
mergesort(0, length - 1);
t2 = clock();
cout << "Merge Sort\t: " << (t2 - t1)/CLK_TCK << "
sec\n";
switch (length) { case 100 :
length = 500;
break; case 500 :
length = 1000;
break; case 1000 :
length = 1500;
break; case 1500 :
length = 2000;
break; case 2000 :
length = 2500;
break; case 2500 :
length = 3000;
break; case 3000 :
length = 3001;
break; }
}
return 0;
}