标题: C语言折半查找 [打印本页] 作者: wpf986530062 时间: 2015-10-25 20:51 标题: C语言折半查找 /*
一个顺序数组,查找某一个元素的下标
如果从第一个开始比较查找,查找次数会相当多,而且比较占用内存
因为数组下标初始有0,所以,如果查找不到返回值不能为0,可以用-1
*/
#include<stdio.h>
int searchIterm(int arr[],int lenth,int key); //声明函数
int main(){
int arr[7]={1,3,5,7,11,14,16};
for (int i = 0; i < 7 ; i ++) { //遍历数组
printf("%d\t",arr[i]);
}
printf("\n");
int a = searchIterm(arr,7,7);
printf("%d\n",a);
return 0;
}
int searchIterm(int arr[],int lenth,int key){ //三个参数,数组名,数组长度,要查找的元素
int l = 0;
int h = lenth - 1;
int m = (l + h)/2;
while (l <= h) {
if (key > arr[m]) {
l = m + 1;
}else if(key < arr[m]){
h = m - 1;
}else{
return m ;
}