我的合并排序函数是吐出 0 而不是对我的列表进行排序
My mergesort function is spitting out 0's instead of ordering my list
我试图做一个合并排序函数,似乎无法理解为什么我的列表打印出"00000100000"。我有一种感觉,它可能是我的辅助数组,我正在传递,但我想保持它在我的代码中,如果可能的话。下面是我的代码:
void merge(int arr[], int aux[], int low, int mid, int high)
{
int leftStart = low;
int rightStart = mid+1;
int auxIndex = low;
int start = low;
while(leftStart<=mid && rightStart<= high)
{
if(arr[leftStart]>=arr[rightStart])
{
aux[auxIndex] = arr[rightStart];
auxIndex++;
rightStart++;
}
else
aux[auxIndex] = arr[leftStart];
auxIndex++;
leftStart++;
}
if(leftStart>mid)
{
for(;rightStart<=high; rightStart++)
{
aux[auxIndex] = arr[rightStart];
}
}
if(rightStart>high)
{
for(;leftStart<=high; leftStart++)
{
aux[auxIndex] = arr[rightStart];
}
}
for(; start <= high; start++)
arr[start]=aux[start];
}
void mergeSort(int arr[], int aux[], int low, int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
mergeSort(arr, aux, low, mid);
mergeSort(arr, aux, mid+1, high);
merge(arr,aux, low, mid, high);
}
}
int main(int argc, char *argv[]) {
int arr[20]={6,4,3,2,1,7,8,9,5,6,7,5};
for(int i = 0; i<12; i++)
cout<<arr[i];
int aux[20];
mergeSort(arr, aux, 0, 12);
for(int i = 0; i<12; i++)
cout<<arr[i];
return 0;
}
在valgrind
或等效的分析工具下运行程序。您将发现代码中存在与数组访问相关的直接错误。
相关文章:
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- 如何修复我的快速排序实现?
- C++为什么我的指针选择排序中存在分段错误?
- 我无法让我的合并排序实现运行
- 为什么我的函数接受"std::string"进行排序不会改变它?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 我的排序算法程序中的堆错误
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 我的快速排序在对预排序的项目进行排序时失败,如何改进?
- 需要关于如何将我的随机数数组连接到冒泡排序的帮助
- 当给出预先排序的输入时,为什么我的快速排序实现很慢
- 对数组进行排序时遇到问题。为什么我的数组无法正确排序?
- 为什么我的代码没有对数组中第二个索引上的数据进行排序?
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 堆排序,我无法弄清楚我的代码出了什么问题,输出顺序不正确
- 不确定我的排序算法出了什么问题
- 为什么我的排序代码不起作用?
- 在我的排序列表中插入项目时出现问题