| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1164 人关注过本帖
标题:使用数组时定义无穷大?为什么?
只看楼主 加入收藏
ifeng1336
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-8-1
收藏
 问题点数:0 回复次数:1 
使用数组时定义无穷大?为什么?
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++;
        }
    }
   
}
为什么要定义无穷大?
2017-03-12 18:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
不知道你想实现什么功能,但代码肯定是错误的,错的地方太多了
1. 虽然没作强制规定,但C++的区间默认都是前闭后开,然而你这里却是[left,mid],(mid,right),连自身都不能统一
2. 竟然另开数组,搞个屁的算法呀
3. L[mid-left+1]、R[right-mid] 数组溢出了
4. 不能保证两个区间内正常值不含INT_MAX
2017-03-13 18:12
快速回复:使用数组时定义无穷大?为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016919 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved