C/C++笔记(二) 2015/8/15

VS2013中 栈的内存区域只有默认的1M   //修改:项目设置->属性->链接器->系统
先进后出

静态区与程序共存,内存不会被会后利用,除非程序消亡
堆区,块语句执行完成亡

static

限制只能被当前的源文件所引用

插值查找法

int  serch2(double *p, int n, int key)
{
    int tou, wei, zhong;
    tou = 0;
    wei = n - 1;
    while (tou <= wei)
    {
        //zhong = (tou + wei) / 2;      //折半查找
        zhong = tou + (wei - tou)*(key - p[tou]) / (p[wei] - p[tou]);   //插值查找

        if (p[zhong] == key)
            return zhong;
        else if (key > p[zhong])
            tou = zhong + 1;
        else
            wei = zhong - 1;
    }
    return -1;
}

zhong = tou + (wei - tou)*(key - p[tou]) / (p[wei] - p[tou]); //插值查找的公式
(wei - tou) 就一共有多少个元素
(key - p[tou]) / (p[wei] - p[tou]) //确定比例

二分查找也可以是
zhong = (wei + tou)*1/2 = tou + (wei-tou)*1/2 //可以看做是插值查找的一个固定形式,比例固定为1/2

你可能感兴趣的:(C/C++笔记(二) 2015/8/15)