算法中体会数组的不对称性
1.谈谈数组的不对称性
-
初学C这种变成语言时,定义数组的时候就会有点不舒服
int array[10];
这样定义后,数组的大小是10,数组下标范围是0-9,因为数组是0作为开始的,所以无法使用array[10],否则就越界了
-
那么给定两个数,求差值怎么正确的理解呢
-
第一种
1<< x << 6
差值是 6 - 1 + 1
-
第二种
1<< x < 7
差值是 7 - 1
第二种方式就比较直观
-
-
一个问题:100米的树苗,10米放一根,最终树苗的个数
100 / 10 ? 错了
10米放一根,使用左边的树苗算起,除了最后一根其他的都当作10米的一个
最终就是 100 / 10 + 1
2. 解决的方式
1. 当我们设置范围的时候使用:
入界点 << x < 出界点
for (int i = 入界点; i < 出界点; i++)
使用上面的方式,最终差值得到的就是 之间的差值
-
几个记录,使用入界点 尾界点 出界点
-
范围 = 出界点 - 入界点
-
根据入界点和范围得到尾位置
入界点 + 范围 - 1
-
入界点 != 出界点
入界点 < 尾界点
算法递归中常常用作递归结束的判断条件
if( start > begin) return;
注意start是完全可以等于begin的
-
一个圆,圆内是你会的,圆外是你不知道的。而当圆越大,你知道的越多,不知道的也越多了