目录
一、循环遍历查找
int main()
{
//定义一个数组
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//设定一个要查找的数k
int k = 7;
int i = 0;
for (i = 0; i < 10; i++)
{
if (arr[i] == k)
{
printf("指定数为%d,在数组中的下标为%d", k, i);
break;
}
}
return 0;
}
二、二分法查找
二分法原理
二分法,即我们有n个元素,首次查找从n/2处开始,若n/2处元素大于我们要查找的元素,则以n/2处为右边界,继续查找左半部分元素,若n/2处元素小于我们要查找的元素,则以n/2处为左边界继续查找右半部分元素,直至找到相应元素或找完数组没找到相应元素时停止。
代码如下:
int main()
{
//定义一个数组
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//设定一个要查找的数k
int k = 7;
int i = 0;
//定义左下标
int left = 0;
//定义右下标
int right = sizeof(arr) / sizeof(arr[0]) - 1;//数组的长度除以数组元素的长度的得到数组中元素的个数,由于下标从0开始所以-1
while (left <= right)
{
//定义中间元素下标
int mid = (left + right) / 2;
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("指定数为%d,下表为%d", k, mid);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}