「减治思想」简介
这里「减」是「减少问题」规模的意思,治是「解决」的意思。「减治思想」从另一个角度说,是「排除法」,意即:每一轮排除掉一定不存在目标元素的区间,在剩下 可能 存在目标元素的区间里继续查找。每一次我们通过一些判断和操作,使得问题的规模逐渐减少。又由于问题的规模是有限的,我们通过有限次的操作,一定可以解决这个问题。
「减治思想」案例
例 1:以前央视二套的《幸运 52》栏目有一个「猜价格」游戏。游戏规则是:给出一个商品,告诉答题者它的价格在多少元(价格为整数)以内,让答题者猜,如果猜出的价格低于真正价格,主持人就说少了,高于真正的价格,就说多了,看谁能在最短的时间内猜中。这个游戏就是应用减治思想完成「猜价格」任务的。主持人说「多了」或这「少了」,就是给参与游戏的人反馈,让游戏者逐渐缩小价格区间,最终猜中价格。
例 2:不知道大家小时候查《新华字典》的时候是怎么查的,我经常不翻目录,直接根据要找的字的拼音,在字典里翻页。例如要找的字是「算」(汉语拼音首字母为 S),如果一开始翻到了 L 开头的页,那么我就会在 L 开头的页后面的页里任意挑一页。如果看到的是 T 开头的页,我就会在 T 开头的页前面的页里任意挑一页,这样的查字典的策略就应用了减治思想。
例 3:相信有不少程序员定位程序中的 bug 的时候,会在程序里打印一些变量的输出语句,逐步定位有问题的代码的行,这样的定位问题的方法也应用了「减治思想」。
「分治思想」简介
可能有的朋友听说过「分治思想」,「分治思想」与「减治思想」的差别就在于,我们把一个问题拆分成若干个子问题以后,应用「减治思想」解决的问题就只在其中一个子问题里寻找答案。「分治思想」我们在下一章会向大家介绍。
内容100%来源:LeetBook-二分查找