Merge Sort C++实现,无法识别代码中的错误
Merge Sort C++ implementation, Cannot identify the bug in the code
我尝试使用std::vector
在C++中实现合并排序。我认为逻辑没有任何问题。然而,当我运行代码时,我会得到一个比原始数组大且未排序的数组。有人能告诉我我的代码出了什么问题吗?
void merge(vector<double>& x,
vector<double>& y,
vector<double>& merged )
{
int sze_x = x.size();
int sze_y = y.size();
int i =0, j=0;
while (i< sze_x && j < sze_y)
{
if(x[i] <= y[j])
{
merged.push_back(x[i]);
++i;
}
else
{
merged.push_back(y[j]);
++j;
}
}
if(i >= sze_x)
{
for(int l =j; l != sze_y; l++)
{
merged.push_back(y[l]);
}
}
else
{
for(int l =i; l != sze_x; l++)
{
merged.push_back(x[l]);
}
}
}
void split (vector<double> &A, vector<double> &A_1, vector<double> &A_2)
{
int mid = A.size()/2;
int sze = A.size();
for(int i =0; i!=sze;i++)
{
if(i<mid) A_1.push_back(A[i]);
else
A_2.push_back(A[i]);
}
}
void merge_sort(vector<double> &arr)
{
if(arr.size()>1)
{
vector<double> arr1, arr2;
split(arr,arr1,arr2);
merge_sort(arr1);
merge_sort(arr2);
merge(arr1,arr2,arr);
}
}
当您调用时
merge(arr1,arr2,arr);
CCD_ 2仍然具有其所有原始内容。在merge
中调用push_back
到merged
之前,不清除内容。
添加
arr.clear();
在上述行之前,或添加
merged.clear();
在CCD_ 7语句之前的CCD_。
merged.clear();
while (i< sze_x && j < sze_y)
相关文章:
- VS代码无法识别包含路径
- 如何使用口袋狮身人面像通过代码中的麦克风进行语音识别
- 需要帮助识别简单多线程代码中的错误
- G++ 在编译我的 flex 和 bison 代码时无法识别我的 c++ 类
- 在 Windows 7 中编译C++代码(无法识别"g++"命令)
- Windows生物识别框架样本UMDF驱动程序:此设备无法启动.(代码10)
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- 代码::块无法识别标准::线程
- Visual Studio无法识别我的网络摄像头激光测距仪代码的MFC库
- 在c/c++代码中使用什么宏来识别Mavericks OSX 10.9
- RPi_utils无法识别远程、如何更改代码
- Windows上的代码::块13.12即使使用-std=c++11也无法识别std::codecvt
- 识别C++代码问题
- 临时对象 - 何时创建它们,如何在代码中识别它们
- Visual Studio 2015 中的 CLR 应用程序C++(无法识别的代码?)
- 将.cpp更改为 .cu 后,>> C++ 代码中无法识别基本操作数
- 代码块无法识别它编写的类的标头?
- jenkins在构建cpp代码时不会识别错误
- 如何在代码中识别 const char* 和 const char[] 的类型
- 基于标记调度的专用化,用于C++代码中的平台识别和仿真