【力扣】 寻找两个正序数组的中位数(错误归纳)

目录

题目描述:

 我的算法:

代码实现:

发现的错误:

总结:


题目描述:

 【力扣】 寻找两个正序数组的中位数(错误归纳)_第1张图片

 我的算法:

把两个数组合并到一个数组,然后排序,输出中位数

(细节:显然这里两个数组的大小都不够,我们创建数组nums3。

               排序,我用的是冒泡排序  )   

当然这里题目期待用到二分查找,我的算法的耗时也比较长

【力扣】 寻找两个正序数组的中位数(错误归纳)_第2张图片

可以看看官方题解 

 寻找两个有序数组的中位数 - 寻找两个正序数组的中位数 - 力扣(LeetCode)

代码实现:

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int nums3[3000];
    int i;
    for(i=0;inums3[j+1])
            {
                int temp=nums3[j+1];
                nums3[j+1]=nums3[j];
                nums3[j]=temp;
                exchange=1;
            }
        }
        if(exchange==0)
        {
            break;
        }
    }
    double ret;
    if(sum%2==0)//是偶数
    {
        ret=(double)(nums3[sum/2]+nums3[(sum/2)-1])/2.0;
        return ret;
    }else{
        return (double)nums3[(sum/2)];
    }
}

发现的错误:

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
    int nums3[3000];
    int i;
    for(i=0;inums3[j+1])
            {
                int temp=nums3[j+1];
                nums3[j+1]=nums3[j];
                nums3[j]=temp;
                exchange=1;
            }//这里完全照搬冒泡排序,未出现错误
        }
        if(exchange==0)
        {
            break;
        }
    }
    double ret;
    if(sum%2==0)//是偶数
    {
        ret=(double)(nums3[sum/2]+nums3[(sum/2)-1])/2.0;//这个地方要注意sum/2是数组序号
        return ret;
    }else{
        return (double)nums3[(sum/2)];
    }
}

总结:

当写到数组时,需要注意[]内的式子代表的是数组下标。

你可能感兴趣的:(力扣,算法,c++,数据结构)