1>算法思想:

折半查找(Binary Search)的查找过程是:先确定等查记录所在范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。

2>算法

3>算法实现

#include<iostream>
using namespace std;#define ARRAY_SIZE 11
/*
description:
在标准输出设备上显示数组元素。
parameter:
int* p:指向整形数组首元素的指针
int length:整形数据长度
*/
void myshow(int*  p_start,int length){for(int i=0;i<length;i++){cout<<"["<<i<<"]:"<<*(p_start+i)<<endl;}cout<<endl;
}
/*
返回与关键字key相等的数据元素下标,若不存在,返回-1
@param
int *p_start:首元素地址
int length:列表长度
int key :要查找的关键字
*/
int searchBin(int *p_start ,int length,int key){int low=0;int high=length-1;int mid=-1;while(low <=high){mid=(low+high)/2;if(p_start[mid]==key){return mid;//查找成功}else if(p_start[mid]>key){//待查记录在低半区间high=mid-1;}else{//p_start[mid]<key ,待查记录在高半区间low=mid+1;}}return -1;//查找不成功}
int main(){int list[ARRAY_SIZE]={5,13,19,21,37,56,64,75,80,88,92};cout<<"待查找序列:"<<endl;myshow(list,ARRAY_SIZE);int index=-1;for(int i=0;i<ARRAY_SIZE;i++){index =searchBin(list,ARRAY_SIZE,list[i]);cout<<"查找"<<list[i]<<"返回下标为:"<<index<<endl;}index =searchBin(list,ARRAY_SIZE,100);cout<<"查找"<<100<<"返回下标为:"<<index<<endl;return 0;}

运行结果:

4>时间及空间复杂度

C++实现有序表折半查找相关推荐

  1. 由有序序列折半查找构建判定树

    需要特别强调的是折半查找的判定树是一棵平衡树. 一般对于一个有序序列折半查找过程,需要从中间结点开始结点比较起,这样就会进入左子树或者右子树进行比较,因此,只要明白了树的根结点怎么确定的,就能够递归的 ...

  2. 对有序表的查找(快步搜索算法)

    /* 伪代码: Input: 表L, 表的长度n, 步长s, 元素x Output: x所在的位置 Algorithm QS(L, M, N, S, X)  //在长度为N的有序表中以S为步长,查找X ...

  3. Python数据结构——对有序表二分查找

    list= [1, 5, 6, 9, 10, 51, 62, 65, 70] 查找5时: [1, 5, 6, 9, 10, 51, 62, 65, 70]        low=0    high=9 ...

  4. 对长度为200的有序表进行二分查找_程序员常用的查找算法(顺序、二分、插值、分块、斐波那契)...

    顺序查找 基本思想 属于线性查找和无序查找,从一端开始顺序扫描,直到找到与目标值value相等的元素. 这是最基本的查找方法,也是时间复杂度最高的查找算法. 在数据过多时,这种方法并不适用. 代码实现 ...

  5. C语言数据结构顺序表的顺序查找和折半查找的功能

    C语言顺序表顺序查找和折半查找的基本思想和应用 顺序查找算法:又称为线性查找,主要用在-线性表-中进行查找 通常分为:1-无序线性表的一般查找: 2-对关键字有序的顺序表查找: 优缺点分析: 缺点:当 ...

  6. 数据结构-顺序查找和折半查找

    顺序查找即线性查找,通常分为一般无序线性表的顺序查找和有序顺序表的顺序查找. 一般线性表的顺序查找:从线性表的一端开始,逐个检查关键字是否满足条件,若存在则查找成功,返回线性表的位置:否则查找失败. ...

  7. 折半查找判定树及平均查找长度

    折半查找判定树及平均查找长度 从折半查找的过程看,以有序表的中间记录作为比较对象,并以中间记录将表分割为两个子表,对子表继续上述操作.所以,对表中每个记录的查找过程,可用二叉树来描述,二叉树中的每个结 ...

  8. 408数据结构学习笔记——顺序查找、折半查找、分块查找

    目录 1.顺序查找 1.1.顺序查找的概念 1.2.顺序查找的代码 1.3.顺序查找的查找效率 1.4.顺序查找的优化 1.5.顺序表的时间复杂度 2.折半查找 2.1.折半查找的概念 2.2.折半查 ...

  9. java 用折半查找,java折半查找算法

    //当 low>high 时表示查找区间为空,查找失败 } Java 代码: /** * 二分查找算法 * * @param srcArray 有序数组 * @param target 被查找的 ...

最新文章

  1. RUBY,玩玩~~~
  2. response.setcharacterencoding 报错是缺哪个包_出街,你缺的是这一款包包...
  3. 问卷星作答能不能检测到屏幕共享_云端检测,别样精彩——大厂回族自治县王必屯中心小学线上期末检测纪实...
  4. 查看照片的指定位置的像素点值,并在照片中绘制一条指定像素颜色的线段
  5. Win11管理员已阻止你运行此应用,有关详细信息怎么处理?
  6. Java包装类介绍与类型之间相互转换
  7. mysql 联合主键_Mysql的联合主键
  8. linux+sasl认证失败,memcached+SASL:更安全地访问memcached
  9. 孙子兵法的计是最早的SWOT分析,《孙子兵法》首先不是战法,而是不战之法。首先不是战胜之法,而是不败之法...
  10. Google的地球日图标08版
  11. 调频 调幅 与 通信
  12. 机器人迷雾之算力与智能
  13. 第一个页面作品--个人网页导航
  14. C++ Primer Plus 第13章笔记
  15. BYD发动机的逆向研发
  16. 语音合成(TTS)技术在有道词典笔中的应用实践
  17. python快速处理excel_Python处理Excel快速上手
  18. 接受前端挑战:用CSS实现3D立方体
  19. 「学编程常见问题」学Java要准备什么配置的电脑?
  20. 华为手机升级回退_EMUI4.0回退EMUI3.1!通过华为手机助手也能实现

热门文章

  1. springMVC3学习(四)--訪问静态文件如js,jpg,css
  2. Sublime Text 关闭自动更新
  3. Centos常用快捷键
  4. NGUI-Tweens
  5. 【作品发布】QQ2008远程自助 1.5.1.1
  6. BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居:队列 + multiset + 并查集【曼哈顿距离变形】...
  7. ADO.net商机题目
  8. MPU和CPU有什么区别?
  9. Android:日常学习笔记(6)——探究活动(3)
  10. python基础之运算符