注册 登录
编程论坛 C++教室

使用数组时定义无穷大?为什么?

ifeng1336 发布于 2017-03-12 18:24, 1274 次点击
void Merge(int *Array,int left,int mid,int right) //合并
{
    int *L = new int[mid -left+ 1];
    int *R = new int[right - mid];

    for (int i = 0; i < mid-left+1; i++)
    {
        L[i] = Array[left + i];
    }
    for (int j = 0; j < right-mid; j++)
    {
        R[j] = Array[mid + j + 1];
    }
   
    L[mid-left+1] = R[right-mid] = INT_MAX;  //定义无穷大
   
    int i = 0, j = 0;
    for (int k = left; k <= right; k++)
    {
        if (L[i] < R[j])
        {
            Array[k] = L[i];
            i++;
        }
        else {
            Array[k] = R[j];
            j++;
        }
    }
   
}
为什么要定义无穷大?
1 回复
#2
rjsp2017-03-13 18:12
不知道你想实现什么功能,但代码肯定是错误的,错的地方太多了
1. 虽然没作强制规定,但C++的区间默认都是前闭后开,然而你这里却是[left,mid],(mid,right),连自身都不能统一
2. 竟然另开数组,搞个屁的算法呀
3. L[mid-left+1]、R[right-mid] 数组溢出了
4. 不能保证两个区间内正常值不含INT_MAX
1