黑马程序员技术交流社区

标题: 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 ;
        }
        
    }
    return -1;
}
作者: gabriel2016    时间: 2015-10-25 22:09
支持一下啊!
作者: MLP1355053753    时间: 2015-10-25 22:25
赞一个,加油~.~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2