折半查找算法及分析(手工过程)
折半查找的手工过程:
1.我需要查找的数是10;
给定:1 5 8 10 13 14 17 22 25 27 29 31 35 37 40 42 45 47 50 51 58
下标:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
h m t
h m t
h m t
h t
m h
m
这个手工过程到head = tail 时找到了。
我需要查找的数是29;
给定:1 5 8 10 13 14 17 22 25 27 29 31 35 37 40 42 45 47 50 51 58
下标:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
h m t
这个手工过程数在head < tail时程序停止,找到的是下标的那个数。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int binarySearch(int *arr,int count ,int data){int middle;int head = 0;int tail;tail = count;while(arr[middle] != data){middle = (head + tail)/ 2;if(arr[middle] < data){head = middle + 1;}else if(arr[middle] > data){tail = middle - 1;}} return middle;return -1;
}
int main(){int n = 0;int m ;int a[10]={1,4,8,9,16,17,19,20,25,27};printf("请输入需要查找的数: ");scanf("%d",&n);m = binarySearch(a,10,n);printf("%d ",m);return 0;
}
这是一个简单的折半处理,用的是一个简单的数组
需要强调的是:
如果要运用折半算法,数必须是有序的(升序或者降序)
很多人都认为while(head > tail)这样也是正确的,但是对于middle = data时条件一直成立就会出现问题的!
转载于:https://www.cnblogs.com/youdiaodaxue16/p/9016337.html
折半查找算法及分析(手工过程)相关推荐
- 查找算法:折半查找算法实现及分析
折半查找算法介绍 折半查找(Binary Search)又称为二分查找.它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储.从算法名称可以看出算法的思路,先取有序序列 ...
- php折半查找算法,PHP如何实现折半查找算法
本文主要介绍了PHP实现的折半查找算法,简单描述了折半查找的原理,并结合实例形式分析了php采用递归与非递归方式实现折半查找算法的相关操作技巧,需要的朋友可以参考下,希望能帮助到大家. 定义:折半查找 ...
- java 用折半查找,java折半查找算法
//当 low>high 时表示查找区间为空,查找失败 } Java 代码: /** * 二分查找算法 * * @param srcArray 有序数组 * @param target 被查找的 ...
- C语言折半查找算法及代码实现
1.折半查找的定义: 在计算机中,折半查找,也称二分搜索.它是一种在有序数组中查找某一特定元素的搜索算法. 2.折半查找的实现原理: 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则 ...
- 二分查找算法(折半查找算法)
二分查找算法(折半查找算法) 二分查找又称折半查找.二分搜索.折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn). 二分查找算法仅适用于有序序列,它只能用在升序序列或者 ...
- php折半查找算法,php二分法查找(也叫折半查找)算法 (数组必须是从小到大的)
//php二分法查找(也叫折半查找)算法/ 数组必须是从小到大的 $abs=array(1,12,13,114,115,116,117,118); //z查找数组的最大下标 $hight = coun ...
- 修改折半查找算法进行范围查找
/*************************************** *修改折半查找算法进行范围查找 ***************************************/ # ...
- java 二分法查找排序,插入排序,折半查找算法
import java.util.*; /* *二分法排序和插入 */ class Main21 { public static void main(String[] args) { int[] ar ...
- java实现折半查找_java语言之实现折半查找算法
本文主要向大家介绍了java语言之实现折半查找算法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 折半查找(Binary Search)又称为二分查找,其要求数据序列呈线性结构,也就 ...
最新文章
- Js打印表格时部分边框不显示(table 标签)
- Server-Side UI Automation Provider - WinForm Sample
- WinCE系统声音定制
- java语言cd_java语言
- js 将input、textarea、Select等控件替换成标签(span)
- RobotStudio双传送带系统的搭建
- SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework...
- Mysql BLOB和TEXT类型
- 算法:Sliding Window Maximum(滑动窗口最大值)
- GitHub使用教程-官网指南
- QT界面添加背景图片
- python金融反欺诈-项目实战
- 安卓比较好的数独软件_有没有比较好的数独游戏APP?
- 矩阵标准型的系数是特征值吗_矩阵分解术,不得不从高斯说起
- 2017美国数学建模ICM D题 优化机场安全的乘客吞吐量检查点(Optimizing the Passenger Throughput at an Airport Security Checkpo)
- 如何对List去重,含Java8写法
- 倡议书格式范文_写倡议书的格式及范文
- 【iOS】Sign in with Apple
- 我的第一篇文章——stm32的ADC+DMA+滤波算法
- NAS入门之——My Cloud EX2+未入网的路由器局域网组网