while(n++)和while(++n)的区别 以及二分查找。

(一)while循环

1.while(表达式),其括号内的表达式可以为C语言中任意合法的表达式,只是一般常用关系和逻辑表达式。 while(n++) , while(1)等 都是合法的表达。

2.while(n++)和while(++n)的区别

while(n++)代表的意思是 第一步判断n是否满足循环条件,第二步是让n进行一次自加 ,第三步执行循环体中的语句。其与 for(int n = 0 ; 表达式2;n++)类似,但不同的是for是在执行完循环体后才进行n++的。

while(++n)代表的意思是 第一步执行一次++n,第二步判断,第三步执行循环体

#include<stdio.h>
int main()
{
	int a=1;
	while(a++<5);
	printf("%d",a);//输出a的值
	int b=1;
	while(++b<5);
	printf("%d",b);//输出b的值
	return 0;
}

   执行结果是 a=6 b=5

       这是因为第一个while循环在a=5时跳出循环会再一次进行a++从而才停止,第二个循环在b=5的时候就会停止循环。

(二)二分查找

tip:二分查找就是在一个有序列的数组中找出一个特定的值 k。原理就是先取出数组中间的元素与k比较,如果中间值偏大那么k就在数组的左边(反之就在右边),从而缩小范围,然后再一次取出左边的中间数与k再一次比较...如此循环几次过后就能将范围缩到很小。对于数组中有几千上万个元素时,使用二分查找是快速且高效的办法。

如下:请在1到100中找出8并打印出其在数组中的位置(下标)

#include<stdio.h>
int main()
{
	int arr[100] = { 0 };
	int i = 0;
	for (i = 0;i < 100;i++) //先在数组中输入1到100的数字
	{
		arr[i] = i+1;
	}
	int k = 8;  //需要找的数
	int sz = sizeof(arr)//sizeof(arr[0]); //计算出数组的元素个数并将其定义为最右边元素的下标
	int left = 0;  //最左边元素的下标
	int right = sz - 1;//将其定义为最右边元素的下标
	while (left <= right)//二分查找
	{
		int mid = (left + right) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
		if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{
		  printf("找到了k在该数组中的下标%d\n", mid);
		  break;
		}
    }       
	if (left > right)//当发生明显的错误的时候就说明k不在该数组中
	{
		printf("找不到k\n");
	}
	return 0;
}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值