//在有序的数组中查找一个数字
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int a = 6; //在数组中找到6这个数字
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
if (a == arr[i])
{
printf("找到了,下标是: %d\n", i);
break;
}
}
if (i == sz)
{
printf("找不到了 \n");
}
return 0;
}
二分查找法
//在有序的数组中查找一个数字 二分查找法
#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10.};
int a = 6;
int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz - 1;//右下标
while (left <= right)
{
int zhong = (left + right) / 2;
if (arr[zhong] > a)
{
right = zhong -1;
}
else if ( arr[zhong] < a)
{
left = zhong +1;
}
else
{
printf("找到了,下标是:%d\n", zhong);
break;
}
}
if (right < left )
{
printf("不在范围内,找不到\n");
}
return 0;
}