您的位置:首页 > 其它

折半查找------在一个升序的有序数组中查找某个具体的数字

2016-05-29 21:35 573 查看
非递归法:
 = { 1, 5, 12, 36, 45, 98 };
/*
* printf("请输入可查找到的数:> ]递归法(不能输出要查找的数字在原数组中的位置):
#include <stdio.h>
#include <stdlib.h>
int binsearch(int x, int *arr, int n);
int main()
{
int x = 0, inter = 0;
int arr[] = { 1, 5, 12, 36, 48, 98 };
printf("请输入您要查找的数:> ");
scanf_s("%d", &x);
inter = binsearch(x, arr, sizeof(arr)/sizeof(arr[0]));
if (inter == -1)
printf("没找到您要查找的数!\n");
else
printf("找到了您要查找的数%d\n", x);
system("pause");
return 0;
}
int binsearch(int x, int *arr, int n)
{
int mid = (n - 1) / 2;
if (n <= 0)
return -1;
else if (x == *(arr + mid)) /*找到了*/
return mid;
else if(x < *(arr + mid))	/*有点大 */
{
return binsearch(x, arr+mid-1, mid);/*下一次数组长度为mid */
}
else if (x > *(arr + mid)) /*有点小*/
{
return binsearch(x, arr+mid+1, mid);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: