折半查找非递归与递归实现:


#include<stdio.h>
int linner(int a[],int n,int value);
int halfSearch(int a[],int n,int value);
int halfSearch2(int a[],int n,int value,int left,int right);
void main()
{int a[8]= {12,34,50,53,123,135,167,189};// int num=linner(a,8,53);//线性查找// int num=halfSearch(a,8,167);   //非递归int num=halfSearch2(a,8,167,0,7);//递归if(num==-1)printf("没有找到这个数");elseprintf("位置在第:%d",num);
}
int linner(int a[],int n,int value)   //线性查找
{for(int i=0; i<n; i++)if(a[i]==value)return i+1;return -1;
}
int halfSearch(int a[],int n,int value)//非递归折半查找
{int left=0,right=n-1,mid;while(left<=right){mid=(left+right)/2;if(value>a[mid])left=mid+1;else if(value<a[mid])right=mid-1;elsereturn mid+1;}return -1;
}
int halfSearch2(int a[],int n,int value,int left,int right) //递归折半查找
{if(left>right)return -1;int mid=(left+right)/2;if(a[mid]==value)return mid+1;else if(value>a[mid])return halfSearch2(a,n,value,mid+1,right);elsereturn halfSearch2(a,n,value,left,mid-1);
}

折半查找(非递归与递归实现)相关推荐

  1. 折半查找(二分查找)的理解

    目录 折半查找的算法思想 查找过程演示 折半查找的判定树 代码实现 折半查找的算法思想 折半查找又称二分查找,仅适用于有序的顺序表 首先将给定值key与表中中间位置元素的关键字比较, 若相等,则返回该 ...

  2. 查找:线性表的C语言代码实现(顺序查找、折半查找)

    目录 一.线性表结构 两个类的定义 二.线性表的初始化以及根据输入的元素建立线性表 1.线性表的初始化,初始化一个空的线性表 2.根据用户需求,向线性表中添加元素 三.顺序查找  Search1函数( ...

  3. 【查找算法】折半查找法

    本篇文章将介绍折半查找算法. 文章目录 何为折半查找? 算法实现 递归实现 效率分析 何为折半查找? 上一篇文章介绍了顺序查找算法,我们知道,虽然顺序查找算法适用性高,但效率太低,那么能不能在此基础上 ...

  4. Java实现折半查找(二分查找)的递归和非递归算法

    Java二分查找实现,欢迎大家提出交流意见. /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: *     1.要求所查找的数组已有序,并且其 ...

  5. 分治法 —— 折半查找(递归与非递归)

    折半查找(二分查找) 假设为递增有序 基本思路 时间复杂度:O(log2 n) 设a[low-high]是当前查找区间,首先确定该区间的中点位置mid=L(low+high)/2I,然后将待查的k值与 ...

  6. 递归折半查找法 c语言程序,折半查找法的递归和非递归形式

    /* 1.折半查找的查找过程是:先确定待查记录所在区间,然后逐步缩小范围至到找到或者找不到该记录为止. 2.折半查找的性能分析可以由判定树得出,折半查找在查找成功时给定值进行比较的关键字个数至多为⌊l ...

  7. (C语言)BinarySearch二分搜索/折半查找 --- 递归、非递归

    1 /*2 * FILE: BinarySearch.C3 * DATE: 201803064 * ==============5 * DESCRIPTION: 折半查找_递归.非递归实现6 * 二分 ...

  8. 折半查找递归算法_两篇文章带你了解java基础算法之递归和折半查找

    2.1 递归 递归(recursion)是一种常见的解决问题的方法,即把问题逐渐简单化.递归的基本思想就是"自己调用自己",一个使用递归技术的方法将会直接或者间接的调用自己.利用递 ...

  9. 二分查找原理非递归与递归实现【转载】

    二分查找 实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 解题步骤: 定义3个用来记录索引值的变量,变量min记录当前范围最小索引值,初始值为0:变量max记录当前范围最大 ...

最新文章

  1. 基于Attention机制的轻量级网络架构以及代码实现
  2. REST API 安全设计指南
  3. apache ab测试介绍
  4. Java技巧:深拷贝的两种方式2(转)
  5. MySQL中的索引(主键索引)
  6. 推荐我记视频课程笔记的方法和几个工具
  7. 被曝大裁员,涉及30%员工!公司内斗、高管之间拉帮结派 喜茶回应了...
  8. 终于,腾讯也要造车了
  9. ORA-12514: TNS:listener does not currently know of service …
  10. Fiddler的安装与使用
  11. 转 波束成形 Beamforming 简述
  12. js 打印去掉页眉页脚页码_js页面打印去除页眉页脚
  13. Java实现 LeetCode 383 赎金信
  14. nexus9刷机全记录
  15. 免费使用腾讯云每天定时签到京东领取京豆
  16. 如何使用飞秋FeiQ实现两电脑通信(或传输文件)
  17. mysql表中字段数据类型_mysql数据表中字段的数据类型有哪些?
  18. Mind+实现自定义用户库——TM1637数码管
  19. 如何防止用户论坛恶意灌水
  20. 数学の入门到入土 第1天

热门文章

  1. SQL Server 自动化运维系列
  2. vim环境设置和自动对齐
  3. oracle developer 连接 mysql
  4. 写一个简单易用可扩展vue表单验证插件(vue-validate-easy)
  5. iOS AFN监听网络状态
  6. android: 记录及回复lisView的位置
  7. 百家搜索:在网站中添加Google、百度等搜索引擎
  8. perl 中部分正则表达式中匹配非空字符和正常使用字符
  9. iphone-common-codes-ccteam源代码 CCUINavigationBar.h
  10. ReentrantLock可重入锁