//for循环;
//for(表达式1;表达式2;表达式3)
//表达式1:为初始化部分,用于初始话啊循环变量的;
//表达式2;为条件判断部分,用于判断循环时候终止;
//表达式3:调整部分,用于循环条件的调整
//for循环的判断部分省略意味这判断会恒成立;
例如;
for (;;)
{
printf("hehe\n");
}
实例1;遍历数组查找数
遍历数组查找数
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for ( i = 0; i < sz; i++)
{
if (arr[i]==k)
{
printf("找到下标%d\n", i);
break;
}
if (i==sz)
{
printf("找不到");
}
}
return 0;
}
答案;答案为;找到下标6
实例2;二分查找浅解
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);//算数组长度
int k = 1;//定义要查找的数
int left = 0;//初始化左变量
int right = sz - 1;//初始化右变量
while (left<=right)//循环条件判断
{
//int middle = (left + right) / 2;//初始化中间变量此写法怕left + right溢出
int middle = left + (right - left) / 2;//此写法不会
if (arr[middle] < k)//数组数比较
{
left = middle + 1;
}
else if (arr[middle] > k)
{
right = middle - 1;
}
else
{
printf("下标是:%d\n", middle);
break;//找到位置直接跳出循环
}
}
if (left>right)
{
printf("找不到\n");
}
return 0;
}
答案;下标是:0
注意二分查找只试用于单调的数组