线性搜索中设置哨兵
能想到的最直接的一个应用就是c语言中字符串中`\0`的角色。
N个元素的数组中搜寻元素X,分配N+1个元素的空间,最后一个元素放入待搜索的元素X。检查第一个值为X的元素,下标为N即原数组没有该元素;小于N即包含该元素。
好处, 不需要每次判断是否越界。
坏处,数组长度从N变为N+1。
其实可以做个更改,对于给定的数组,征用最后一个元素,若该元素为X,那搜寻结束。若该元素不是X, 那把它改为X(若是全局数组,搜寻结束后还需要改回来,以免引入副作用)。再搜寻[0,N-1]这一段。
或搜寻A[i]==X||A[i]==A[N-1]
本文来自博客园,作者:安然春夏,转载请注明原文链接:https://www.cnblogs.com/weixicai/p/17710420.html。测试只能证明程序有错误,而不能证明程序没有错误。你必须非常努力,才能看起来毫不费力。

浙公网安备 33010602011771号