关于顺序查找的哨兵的作用

博主在学习数据结构查找时,对顺序查找的哨兵算法和传统查找算法进行对比。发现传统算法多一步检查越界操作,会影响算法性能,但在数据规模不大时差异不明显,据说数据大于5000时性能差异大。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近数据结构学到了查找,发现了顺序查找的哨兵,感觉比较有意思,
对比了加入哨兵的算法和传统查找算法
传统查找算法:

int search(int * a,int k,int len)
{  
  、	for(int i = 1; i <len-1 ; i++)   
  	{        	
  		if (a[i]==k)
  			 {           
  			 	return i;       
  			  }else
 				{	return 0;//返回0查找失败            }   
  }

加入哨兵的查找算法:

int search(int * a,int k,int len)
{  
 a[0]=k;//定义哨兵   
 int i=len;   
 while(a[i]!=k)//无论怎样都会一个元素与之匹配,避免了检查是否越界  
  {      
   i--;   
   }    
   return i;//如果返回值为 1则代表查找失败
   }

发现两种算法主要差异为传统算法多了一步检查是否越界的操作,这就会对算法的性能产生影响,不过在数据规模不大的情况下其实没有什么太大的差异(据说大小大于5000时性能就会有很大不同,我没亲测过,不过那个时候还会不会用这种算法来查找还不一定呢)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值