C语言折半查找

2018-09-06  本文已影响0人  AuglyXu

折半查找

#include <stdio.h>

int main()
{
    //需求:查找元素7所在的位置
    int key = 7;
    int num[5] = {1,3,5,7,9};
    int min = 0;
    int max = sizeof(num) / sizeof(num[0]) - 1;
    int mid = min + (max - min) / 2;
    while(max >= min){
        if(num[mid] > key){
            max = mid - 1;
        }else if(num[mid] < key){
            min = mid + 1;
        }else{
            printf("在第%i个索引位置",mid);
            break;
        }
        mid = (min + max)/2;
    }
    return 0;
}


代码如下:

#include <stdio.h>

int main()
{
    int key = 8;
    int num[5] = {1,3,5,7,9};
    int min = 0;
    int max = sizeof(num) / sizeof(num[0]) - 1;
    int mid = (min + max) / 2;
    while(max >= min){
        printf("%i %i\n",min,max);
        if(num[mid] > key){
            max = mid - 1;
        }else if(num[mid] < key){
            min = mid + 1;
        }else{
            break;
        }
        mid = (min + max)/2;
    }
    printf("在第%i个位置插入",min);
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读