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

Posted liming0931

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言——for循环和while循环的效率区别——类似哨兵思想相关的知识,希望对你有一定的参考价值。

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

以上是关于C语言——for循环和while循环的效率区别——类似哨兵思想的主要内容,如果未能解决你的问题,请参考以下文章

for(;;)和while(true)的区别

javascript中,while循环与for循环执行效率上的差异?

python的基础2和3的区别,以及for和while的循环

Python里for和while的区别(74)

c语言选择排序中为啥一层for循环中要定义变量k,直接把交换那一步写到上面if语句中不行吗?

for,while,do while语句区别以及常见死循环格式