折半查找python实现

折半查找是常用的查找方法(在按大小顺序排列中的数组或者列表中更是如此),与传统的顺序查找相比,它查找的效率更高。

算法思想

算法的思想很直接,也就是先把第一个和最后一个作为作为low和high的值,然后将要查找的数字与这两个位置对应的数值进行比较(当然,为了保证算法稳健性,先判断要查找的数字在不在数组或列表中,如果不存在则提示重新输入)。

算法操作步骤

设给定的数组为A,元素为A[i],元素个数一共有n个,其中0<=i<=n-1,
1、设置查找中值A[mid],中值位置为mid=(low+high)/2;
2、如果要查找的值与A[mid]相等,那么就把这个值打印出来,算法结束;如果A[mid]的值较小,则设置low=mid+1;如果A[mid]的值较大,则设置high=mid-1;
3、重复第1、第2步骤,直到查找结束为止。
python代码如下:

def halffind(a,c,low,high): mid=(low+high)//2if c == a[mid]:return mid+1elif low>high:return Falseelif c>a[mid]:return halffind(a,c,low+1,high)else:return halffind(a,c,low,high-1)if __name__ == "__main__":a=[56,52,-96,-53,23,-789,520]   #测试案例c=int(input('Please enter the number you want to find:'))if c not in a:print('当前输入元素不在列表中!')else:print('The position of the requried number in the list is:')answer=halffind(a,c,0,len(a)-1)  print(answer)

折半查找python实现相关推荐

  1. 经典算法 之 折半查找 python实现

    ​ ​ 活动地址:CSDN21天学习挑战赛 折半查找 1.查找算法 基本概念 不同查找算法分类 2. 折半查找 伪代码 算法评价 3. 算法实践(Python) 折半查找 参考 1.查找算法 查找(S ...

  2. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

  3. Python二分查找/折半查找算法详解--(面试常考)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究)   二分查找也称折 ...

  4. python语言折半查找_C语言折半查找 - 胡若晨的个人空间 - OSCHINA - 中文开源技术交流社区...

    /************************************************************************* > File Name: bin_searc ...

  5. python123第k序元素查找_Python实现折半查找并用matplotlib实现动态过程可视化

    折半查找是算法中减治策略的基本例子,实现起来也很简单,但是在网上看到的图片教程不觉得很乾巴麽?? 在这里插入图片描述 这是一个简单的实现: def Reduction(lists, k): " ...

  6. java学习笔记之折半查找法(二分法)

    2019独角兽企业重金招聘Python工程师标准>>> package Xhe.com; //折半查找法(二分法) public class halfSearch {     pub ...

  7. 二分查找python实现代码_二分查找——Python实现

    一.排序思想 二.python实现 def binarySearchDemo(arr, key): """ python二分查找非递归方式 :param arr:待排序列 ...

  8. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  9. 经典算法之折半查找(BinarySearch)

    活动地址:CSDN21天学习挑战赛 算法 三分学,七分练,每天进步一点点. 文章目录 1. 概念 2. 伪代码 3. 代码实现 3.1 Java版本 3.2 Python版本 4. 算法效率分析 4. ...

最新文章

  1. Android怎么隐藏前端,Android-Webview支持缩放并掩藏讨厌的缩放控制条
  2. ccna第十课 IGRP路由协议
  3. Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet
  4. 享元模式 -- 大话设计模式
  5. linux全自动安装光盘,CentOS7全自动安装光盘制做详解
  6. Git版本管理工具的使用
  7. 三极管的“非教科书式”解析,什么正偏、反偏都统统滚蛋!
  8. case 逻辑java,java – 了解CaseInsensitiveComparator中的逻辑
  9. 基于BERT进行商品标题实体识别,很详细~
  10. 如何设置蓝牙音频设备与Mac配合使用呢?
  11. 判断一个点是否在多边形区域内
  12. numpy.squeeze()的用法
  13. 51单片机最小系统原理分析
  14. 【矩阵论】线性空间与线性变换(5)
  15. 关于bitlocker加密后的格式化
  16. ORACLE官网下载登陆账号可以使用
  17. 操作系统的奋斗(一)计算机系统概述
  18. 哈尔滨工业大学考研 网络与空间安全 837 资料库
  19. PI圆周率小数点后一百万位数据
  20. android的实现关注好友功能,android仿微信好友列表功能

热门文章

  1. 转:UNITY,如何为你的游戏选择正确的网络类型
  2. C#一种最简单实用安全的单例模式,也是线程安全的
  3. Elasticsearch分布式一致性原理剖析(三)-Data篇
  4. mongodb基础知识_3
  5. Android测试中被测应用挂了怎么办?
  6. clcikhouse Code: 1000. DB::Exception: File not found
  7. hdu 3046(最小割最大流)
  8. 通过负载均衡器+域名实现容灾切换-(3)浏览器的DNS缓存过程
  9. [洛谷P4735]最大异或和
  10. 部署Django到云服务器(centos+nginx+mysql+uwsgi+python3)【操作篇(1)】