线性搜索中设置哨兵

能想到的最直接的一个应用就是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]

 
 
posted @ 2023-09-18 01:06  安然春夏  阅读(33)  评论(0)    收藏  举报