今天学《数据结构与算法之美》的剩下的二分查找的三个变体。 分别是:
第一个还好,因为和昨天的查找第一个等于给定值的元素类似,所以很快的写了出来。 但是第二个和第三个就不知道怎么去写,感觉很难。 因为我以为这是需要先找到给定值的元素,之后再去找第一个大于等于给定值的元素。 在尝试写的过程中发现如果数组中本身就没有要找的值,那么如何开始。 我就陷入到这个困难中很久,后来还是选择看看作者是怎么写的,发现代码比第一个算法的代码还要简单。 然后经过逐行分析,发现并不需要先找给定值的元素,而是直接找大于等于给定值的元素,然后再去判断是不是第一个,如果是第一个便停下来,如果不是继续重复这个操作即可。 在第二个算法想明白之后,第三个算法也就依葫芦画瓢,先是找到小于等于给定值的元素,然后再去判断是不是最后一个,后面的步骤和第二种算法是一样的。 在学完这三种二分查找变体的算法,我注意到自己在写第二种算法写不出来的时候,陷入到“我以为”的情况无法自拔。 我不知道这种情况怎么避免,我能想到的是休息一下换换脑子,但是要在什么时候换换脑子看样子需要灵活应变。 我写这篇日记是为了记录一下,自己的这种情况,希望未来能够有办法解决。 |
|