算法中体会数组的不对称性

1.谈谈数组的不对称性

  1. 初学C这种变成语言时,定义数组的时候就会有点不舒服

    int array[10];
    

    这样定义后,数组的大小是10,数组下标范围是0-9,因为数组是0作为开始的,所以无法使用array[10],否则就越界了

  2. 那么给定两个数,求差值怎么正确的理解呢

    1. 第一种

      1<< x << 6

      差值是 6 - 1 + 1

    2. 第二种

      1<< x < 7

      差值是 7 - 1

    第二种方式就比较直观

  3. 一个问题:100米的树苗,10米放一根,最终树苗的个数

    100 / 10 ? 错了

    10米放一根,使用左边的树苗算起,除了最后一根其他的都当作10米的一个

    最终就是 100 / 10 + 1

2. 解决的方式

​ 1. 当我们设置范围的时候使用:

​ 入界点 << x < 出界点

for (int  i = 入界点; i < 出界点; i++)

​ 使用上面的方式,最终差值得到的就是 之间的差值

  1. 几个记录,使用入界点 尾界点 出界点

    1. 范围 = 出界点 - 入界点

    2. 根据入界点和范围得到尾位置

      入界点 + 范围 - 1

    3. 入界点 != 出界点

      入界点 < 尾界点

      算法递归中常常用作递归结束的判断条件

    if( start > begin) return;
    

    ​ 注意start是完全可以等于begin的

posted @ 2021-03-01 11:45  make_wheels  阅读(61)  评论(0编辑  收藏  举报