法1:直接遍历
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7,i;
int sz = sizeof(arr)/sizeof(arr[0]);
for(i=0;i<=sz-1;i++)//直接遍历
{
if(arr[i] == k)
{
printf("找到了,下标是:%d\n",i);
break;
}
}
if(i == sz)
{
printf("没找到\n");
}
}
法2:二分查找法
#include <stdio.h>
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 left = 0;//左下标
int right = sz-1;//右下标
while(left<=right)//找不到的情况下用来跳出循环
{
int mid = (left+right)/2;//作为数组下标用来比较
if(arr[mid]>k)
{
right = mid-1;//缩小寻找范围
}
if(arr[mid]<k)
{
left = mid+1;
}
if(arr[mid]==k)
{
printf("找到了,下标是: %d\n",mid);
break;
}
}
if(left>right)//循环完仍然没有找到
{
printf("没找到\n");
}
}