问题遇到的现象和发生背景
编个递归排序调用函数的时候一步步调试,发现right的值不对
问题相关代码,请勿粘贴截图
#include <stdio.h>
int merge(int a[], int L, int mid, int R)
{
int help[R - L + 1];
int i = 0;
int left = L;
int right = mid + 1;//出现问题的地方!!!!!
int test = 0;
// for (; i < (R - L + 1) && left <= mid && right <= R; i++)
// {
// if (a[left] < a[right])
// {
// help[i] = a[left];
// left++;
// }
// else
// {
// help[i] = a[right];
// right++;
// }
// }
// while (left <= mid)
// {
// help[i++] = a[left++];
// }
// while (right <= R)
// {
// help[i++] = a[right++];
// }
// for (int x = 0; x < (R - L + 1); x++)
// {
// a[x] = help[x];
// }
return 0;
}
int process(int a[], int L, int R)
{
if (L < R)
{
int mid = L + ((R - L) >> 1);
process(a, L, mid);
process(a, mid + 1, R);
merge(a, L, mid, R);
return 0;
}
else
return 0;
}
int main()
{
int n = 10;
int i, j;
int a[10] = {5, 44, 3, 54, 6, 76, 2, 3432, 5, 54};
process(a, 0, 3);
for (int x = 0; x < n; x++)
{
printf(" %d ", a[x]);
}
printf("\n");
}
运行结果及报错内容
我的解答思路和尝试过的方法
只要用right就会出现问题为什么?