从信息的角度看数字的表示和分割(败者树多路时的层数,树状数组求和时的次数,skiplist层数的确定)
2011-11-20 21:11
337 查看
从信息的角度看数字的表示和分割(败者树多路时的层数,树状数组求和时的次数,skiplist层数的确定)
当用二进制表示数字时,除了进位关系外,还可以获得一些更弱但更有意义的联系存在。比如思考一个任意的数字它的二进制中1的分布情况,从人的思维角度看,是先看它的最高位应该在哪里?然后采用递归的方法,最后可以完全确定下来。而在观察数字的增长过程中,数字1分布的变化情况,其中体现的是当数字达到2^n次方时,第n个bit位将被设置为1,这其中包含的是多个2个1变2,2个2变4,2个4变8的过程,确定败者树多路时的层数和树状数组求和时的次数时采用的方法与这个完全一样,现在再思考为什么败者树和树状数组要以2为基,理论上以其它为基并不会改变时间复杂度,应该说只是表示上的习惯。
当用二进制表示数字时,除了进位关系外,还可以获得一些更弱但更有意义的联系存在。比如思考一个任意的数字它的二进制中1的分布情况,从人的思维角度看,是先看它的最高位应该在哪里?然后采用递归的方法,最后可以完全确定下来。而在观察数字的增长过程中,数字1分布的变化情况,其中体现的是当数字达到2^n次方时,第n个bit位将被设置为1,这其中包含的是多个2个1变2,2个2变4,2个4变8的过程,确定败者树多路时的层数和树状数组求和时的次数时采用的方法与这个完全一样,现在再思考为什么败者树和树状数组要以2为基,理论上以其它为基并不会改变时间复杂度,应该说只是表示上的习惯。
相关文章推荐
- java遍历整数list集合或者整数数组得到最大重复数字次数如果次数相同取较小的值
- 笔试算法题(30):从已排序数组中确定数字出现的次数 & 最大公共子串和最大公共序列(LCS)
- 厦门1165 第K小数 树状数组 不重复数字
- 数组中出现次数超过一半的数字
- 统计一个数字在排序数组中出现的次数
- 数组中超过出现次数超过一半的数字
- 剑指offer-数字在排序数组中出现的次数
- 数组中出现次数超过一半的数字
- 数字在排序数组中出现的次数
- 【剑指offer】5.2时间效率——面试题29:数组中出现次数超过一半的数字
- 统计一个数字在排序数组中出现的次数(二分法)
- 剑指offer 38 数字在排序数组中出现的次数
- poj 3468 树状数组解法(解决区间更新,区间求和)
- 《剑指offer》数字在排序数组中出现的次数
- 找出数组中出现次数超过数组长度一半的数字
- 数组中出现次数超过一半的数字
- 剑指Offer FindNumberMoreThanHalf 找出数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数最多的数字
- 每日一道算法题:微软面试题:在排序数组中,找出给定数字出现的次数