我试图实现合并排序算法从(介绍算法(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,
我正试图实现合并排序算法从(介绍算法(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)
参数顺序错误。参见low
和high
变量排序
相关文章:
- C++选择排序算法中的逻辑错误
- 排序算法c++
- 下面是排序算法O(n)吗
- 为什么我的排序算法会更改数组值
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 排序算法问题(购买商店物品)(崩溃)
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 为什么在此排序算法实现中,向量明显比数组慢?
- C++中合并排序算法的奇怪行为
- 我的排序算法程序中的堆错误
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 解释一下这个排序算法是如何工作的?
- 快速排序函数在快速排序算法中如何工作?
- 分段故障,合并排序算法
- 这种排序算法已经存在吗?
- 为什么此代码上的排序算法不调用类的交换版本?
- 为什么我的替代排序算法不起作用?
- 选择排序算法生成无序结果
- 递归合并排序算法实现
- 这种快速排序算法有什么问题?