折半查找法---C语言实现

/******************************************************************************************* ** 函数名称: HalfFindElement() ** 作 者: 张月华 ** 版 本: 1.0.0 ** 日 期: 2011-6-16 ** 功能描述: 折半查找,返回元素的位置(从0开始计数,和数组下标一致) ** 被本函数调用的函数清单: ** 调用本函数的函数清单: 1. main() ** 被访问的表: 无 ** 被修改的表 : 无 ** 输 入: int array_in[] --- 输入数组,升序排列 int element_amount --- 元素个数 int key_in --- 欲查找的关键字 ** 输 出: 无 ** 返 回 值: 查找到 -- 关键字的位置(标号和数组下标一致) 没找到 -- 返回-1 ** 其 他: ** 修改历史: 1. 修改时间: 修 改 者: 版 本: 修改简述: 2. ...... *********************************************************************************************/ int HalfFindElement(int array_in[],int element_amount,int key_in) /* array_in[]是升序数组 */ { int mid; /* 折半查找的中间位置 */ int top = 0; int bottom = element_amount - 1; int is_find = 0; /* 查找到标识符。找到=1,否则=0 */ int local ; /* 找到的元素的位置 */ if ((key_in < array_in[0]) || (key_in > array_in[element_amount - 1]) ) /* 再循环开始前就判断 */ { local = -1; /* 标记位置 */ is_find = 0; /* 没找到 */ } while ( (is_find == 0) && (top <= bottom)) { mid = (top + bottom) / 2; if (key_in == array_in[mid]) /* 找到了 */ { local = mid; /* 标记位置 */ is_find = 1; /* 找到 */ } else if (key_in < array_in[mid]) { bottom = mid - 1; } else { top = mid + 1; } } if ((0 == is_find) || ( -1 == local)) /* 返回值 */ { return -1; } else return local; /* 返回位置 */ }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值