前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言——for循环和while循环的效率区别——类似哨兵思想

C语言——for循环和while循环的效率区别——类似哨兵思想

作者头像
用户4645519
发布2020-09-07 11:32:39
1.3K0
发布2020-09-07 11:32:39
举报
文章被收录于专栏:嵌入式学习嵌入式学习
int ID_Conv_Sentinel(int u16device_cfg_num)
{
    int i8id;
	
	int size=0;
    int i=0;
	
	size = sizeof(Device_ID_Table)/sizeof(Device_ID_Table[0]);
	
	while(Device_ID_Table[i]!=u16device_cfg_num)
	{
		//遍历0到size-1的数值
		i++;
		if(i==size)
		{
			i = -1;
			break;	//必须break,否则数组溢出
		}
		//如果i未达到size-1,会自动退出while循环
	}
	
	i8id = i;
	
	return i8id;
}


int ID_Conv(int u16device_cfg_num)
{
	int i8id;
	
	int size=0,i = 0;

	size = sizeof(Device_ID_Table)/sizeof(Device_ID_Table[0]);
	
	for(i=0; i<size; i++)
    {
		//如果好列表中的有符合,则把i保存
		if(u16device_cfg_num == Device_ID_Table[i])
		{
			i8id = i;
			break;	//跳出循环,不再查找
		}
    }
	if(i == size)
	{
		//如果已经遍历完毕,仍未找到,则返回-1
		i8id = -1;
	}
	
	return i8id;
}

在for循环中每次循环都需要对i进行是否越界的判断,而while循环查找只要对比一次即可,避免了查找过程中每次比较后都要判断查找位置是否越界的小技巧,看似与原先差别不大,但是总数据较多时,效率提高很明显,是非常好的编程技巧。当然,“哨兵”也不一定在数组开始,也可以在数组的末端甚至是任何位置。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档