我试图实现合并排序算法从(介绍算法(CLRS))使用c++中的矢量,但数组不是排序,

I am trying to implement Merge sort algorithm from (Introduction to Algorithms (CLRS)) using a vector in c++ but the array is not sorting,

本文关键字:排序 算法 c++ 数组 CLRS 实现 合并 使用      更新时间:2023-10-16

我正试图实现合并排序算法从(介绍算法(CLRS))在c++中使用向量,但向量不是排序,请帮忙,我哪里做错了,我正在尝试使用引用调用
输入来自一个文本文件,其中在新行

中包含整数。
#include <iostream>
#include <fstream>
#include <vector>
#include <limits>
using namespace std;
void merge(vector<long>& A, long high, long mid, long low)
{
     long n1,n2;
    n1 = mid -low +1;
    n2 = high - mid;
vector<long> L; //auxilarry array
vector<long> R; //auxilarry array
for(int i = low; i <= mid;i++)
{
    L.push_back(A[i]);
}
for(int i = mid+1; i <= high;i++)
{
    R.push_back(A[i]);
} 
L.push_back(numeric_limits<int>::max()); 
R.push_back(numeric_limits<int>::max());
int i = 0, j = 0;
for(int k = low; k <= high; k++)
{
    if(L[i]<=R[j])
    {
        A[k] = L[i];
        i++;
    }
    else
    {
        A[k] = R[j];
        j++;
    }
}
}
void mergeSort(vector<long>& A, long low, long high)
{
long mid;
if(low < high)
{
    mid = (high+low)/2 ;
    mergeSort(A,low,mid);
    mergeSort(A, mid+1,high);
    merge(A,low, mid,high);
 }
}
int main()
{
ifstream fin("Array.txt");
vector<long> array;
for(long i;fin>>i;)
{
    array.push_back(i);
}
cout<<array.size();
mergeSort(array,0,array.size());
for(long i=0;i<array.size();i++)
{
    cout<<array[i]<<endl;
}
return 0;
}

您的合并函数声明为:

void merge(vector<long>& A, long high, long mid, long low)

和u在合并排序by中调用merge。

void merge(array, low, mid, high)

参数顺序错误。参见lowhigh变量排序