利用二分法从有序表中查找某个数值-C语言

来源:互联网 发布:淘宝店需要什么手续 编辑:程序博客网 时间:2024/06/06 05:10
/**二分法查找有序表(从小到大)中的某个值**/#include <stdio.h>#include <stdlib.h>int binary_search(int key, int *a, int n){    int i,low,high,mid,count=0;    low = 0;    high = n-1;    while(low<high) //查找范围不为0时,进行循环    {        count++;//记录查找次数        mid = (low + high)/2;//中间位置        if(key<a[mid])//key值小于中间值时        {            high = mid - 1;//确定左子表范围        }        else if(key>a[mid])//key值大于中间值时        {            low = mid + 1;//确定右字表的范围        }        else if(key == a[mid])//key值等于中间值时        {            printf("查找成功!\n第%d次查找成功!\na[%d]=%d\n", count, mid, a[mid]);            count1++;            break;        }    }    if (0==count1)    {        printf("查找失败!\n");    }    return 0;}int main(){    int i,j,len,key=0;    int *a;    printf("请输入需要查找的序列元素的个数:\n");    scanf("%d", &len );    a = (int *)malloc(sizeof(int) * len);    printf("请输入需要查找的序列:\n");    for(i=0;i<len;i++)    {        scanf("%d", &a[i]);    }    printf("请输入需要查找的数值:\n");    scanf("%d", &key);    binary_search(key, a, 10);    free(a);    return 0;}

原创粉丝点击