折半查找python实现
折半查找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实现相关推荐
- 经典算法 之 折半查找 python实现
活动地址:CSDN21天学习挑战赛 折半查找 1.查找算法 基本概念 不同查找算法分类 2. 折半查找 伪代码 算法评价 3. 算法实践(Python) 折半查找 参考 1.查找算法 查找(S ...
- python实现二分查找(折半查找)算法
python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...
- Python二分查找/折半查找算法详解--(面试常考)
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 二分查找也称折 ...
- python语言折半查找_C语言折半查找 - 胡若晨的个人空间 - OSCHINA - 中文开源技术交流社区...
/************************************************************************* > File Name: bin_searc ...
- python123第k序元素查找_Python实现折半查找并用matplotlib实现动态过程可视化
折半查找是算法中减治策略的基本例子,实现起来也很简单,但是在网上看到的图片教程不觉得很乾巴麽?? 在这里插入图片描述 这是一个简单的实现: def Reduction(lists, k): " ...
- java学习笔记之折半查找法(二分法)
2019独角兽企业重金招聘Python工程师标准>>> package Xhe.com; //折半查找法(二分法) public class halfSearch { pub ...
- 二分查找python实现代码_二分查找——Python实现
一.排序思想 二.python实现 def binarySearchDemo(arr, key): """ python二分查找非递归方式 :param arr:待排序列 ...
- c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)
冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...
- 经典算法之折半查找(BinarySearch)
活动地址:CSDN21天学习挑战赛 算法 三分学,七分练,每天进步一点点. 文章目录 1. 概念 2. 伪代码 3. 代码实现 3.1 Java版本 3.2 Python版本 4. 算法效率分析 4. ...
最新文章
- Android怎么隐藏前端,Android-Webview支持缩放并掩藏讨厌的缩放控制条
- ccna第十课 IGRP路由协议
- Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet
- 享元模式 -- 大话设计模式
- linux全自动安装光盘,CentOS7全自动安装光盘制做详解
- Git版本管理工具的使用
- 三极管的“非教科书式”解析,什么正偏、反偏都统统滚蛋!
- case 逻辑java,java – 了解CaseInsensitiveComparator中的逻辑
- 基于BERT进行商品标题实体识别,很详细~
- 如何设置蓝牙音频设备与Mac配合使用呢?
- 判断一个点是否在多边形区域内
- numpy.squeeze()的用法
- 51单片机最小系统原理分析
- 【矩阵论】线性空间与线性变换(5)
- 关于bitlocker加密后的格式化
- ORACLE官网下载登陆账号可以使用
- 操作系统的奋斗(一)计算机系统概述
- 哈尔滨工业大学考研 网络与空间安全 837 资料库
- PI圆周率小数点后一百万位数据
- android的实现关注好友功能,android仿微信好友列表功能
热门文章
- 转:UNITY,如何为你的游戏选择正确的网络类型
- C#一种最简单实用安全的单例模式,也是线程安全的
- Elasticsearch分布式一致性原理剖析(三)-Data篇
- mongodb基础知识_3
- Android测试中被测应用挂了怎么办?
- clcikhouse Code: 1000. DB::Exception: File not found
- hdu 3046(最小割最大流)
- 通过负载均衡器+域名实现容灾切换-(3)浏览器的DNS缓存过程
- [洛谷P4735]最大异或和
- 部署Django到云服务器(centos+nginx+mysql+uwsgi+python3)【操作篇(1)】