1.二分法
代码如下:
void Er_fen(int arr[], int sz,int n)
{
int left = 0;
int right = sz - 1;
while (left < right)//左边的数大于右边的数循环终止
{
int mid = (left + right) / 2;//int型 求出的是整数,不是小数
//要找的数在中点左边
if (n < arr[mid])
{
right = mid - 1;
}
//要找的数在中点右边
else if (n>arr[mid])
{
left = mid + 1;
}
//否则找到了,直接跳出
else
{
printf("找到了是: %d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到了");
}
}
int main()
{
int n = 0;
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sz = sizeof(arr) / sizeof(arr[0]);//求数组个数
scanf("%d", &n);//输入要找的数
int getchar();
Er_fen(arr, sz, n);//二分函数
}