标签:代码 lib 长度 查找 amp osi 就是 else 指定
#include <stdio.h>
#include <stdlib.h>
int search(int arr[],int len,int key)
{
int mid,low = 1;
int high = len;
//printf("%d!",high);
while(low <= high)
{
mid = (low+high)/2;
//printf("%d ",mid);
if(key == arr[mid])
{
return mid+1;
break;
}
else if(key>arr[mid])
low = mid+1;
else
high = mid-1;
}
return 0;
}
int BSR(int arr[],int key,int low ,int high)
{
if (low > high)
return 0;
int mid = low + (high - low)/2;
if (arr[mid] == key)
return mid+1;
else
if (key < arr[mid])
return BSR(arr,key,low,mid-1);
else
return BSR(arr,key,mid+1,high);
}
int main()
{
int key;
int position1,position2;
int arr[] = {3,5,7,11,13,15};
printf("请输入要查找的数:");
scanf("%d",&key);
//printf("\n(如果这个数存在我将会返回它所对应的位置,否则返回0)");
printf("------------------------------------------------\n");
/*
//数组查找
position1 = search(arr,sizeof(arr)/sizeof(arr[0]),key);
if (position2 == 0)
printf("这个不存在数组中!(0)");
else
printf("这个数在数组中的位置是:%d",position2);
*/
//递归查找
position2 = BSR(arr,key,0,sizeof(arr)/sizeof(arr[0]));
if (position2 == 0)
printf("这个不存在数组中!(0)");
else
printf("这个数在数组中的位置是:%d",position2);
//printf("%d",sizeof(arr)/sizeof(arr[0]));
//用sizeof求一个数组的长度,但是arr是一个整形每个元素占
//4个字节,所以求数组长度的时候要除4,就是除一个字节大小
return 0;
}
以上代码题目分别是:
实现折半查找函数,查找指定元素,若元素在列表中存在,则返回序号,若不存在,则返回0,例如,已知序列“3,5,7,11,13,15”,若查找元素7,则返回3,若查找元素9,则返回0,其它具体要求如下:
1. 待查记录为整数序列;
2. 待查记录从数组下标1处开始存储;
3. 待查记录必须有序。
标签:代码 lib 长度 查找 amp osi 就是 else 指定
原文地址:https://www.cnblogs.com/respects/p/13178228.html