第07天C语言(14):折半查找练习

#pragma mark 折半查找练习 ###pragma mark 概念

###pragma mark 代码

#include <stdio.h>
insertValue(int number[], int length,int key);
int main()
{
    // 现有一个有序的数组,要求给定一个数字,将该数字插入到数组中,还要保证数组是有序的
    // 其实就是找到需要插入数字的位置
    // 其实这个位置就是min的位置
    
    /*
     min = 0;    == mid + 1 == 3  == 3 + 1 == 4
     max = 4;    == mid - 1 == 3
     mid = 2;    == 7/2 = 3 == 4
     */

//                          2
//                             3
//                               4
    int nums[5] = {1,3,5,7,9};
    int key = 4;
    int length = sizeof(nums)/sizeof(nums[0]);
    printf("需要插入的位置%i\n",insertValue(nums,length,key));
           
    return 0;
}

int insertValue(int number[], int length,int key)
{
    // 插入的位置
    
    int min, max , mid;
    min = 0;
    max = length -1;
    while (min <= max) {
        mid = (min + max) / 2;  // 中间值
        if (key > number[mid]) {
            // 对比的值 大于 中间值
            min = mid + 1;
        }
        else if (key < number[mid])
        {
            // 对比的值 小于 中间值
            max = mid - 1;
        }
    }
            return min;
}

转载于:https://my.oschina.net/u/3561184/blog/1143099

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值