gpt4 book ai didi

c++ - 我正在尝试使用 c++ 中的 vector 从(算法简介(CLRS))实现合并排序算法,但数组没有排序,

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:14 24 4
gpt4 key购买 nike

我正在尝试使用 C++ 中的 vector 实现来自(算法简介 (CLRS))的合并排序算法,但该 vector 未排序,请帮忙,我哪里错了,我正在尝试使用引用调用
输入来自一个文本文件,该文件在新行中包含整数

#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)

你在 mergesort by 中调用 merge。

void merge(array, low, mid, high)

参数的顺序是错误的。查看 lowhigh 变量排序

关于c++ - 我正在尝试使用 c++ 中的 vector 从(算法简介(CLRS))实现合并排序算法,但数组没有排序,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com