C++ 错误:函数调用中只有两个参数

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

我正在开发一个程序,该程序测量合并排序需要多少秒来排序随机元素,我根据这里的代码:

我得到一个错误,说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(“rand.dat”,ios::binary);
用于(长i=0;i如果(i
mergesort
接受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;
 }