折半查找(C语言)
一、二分查找
在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法。
二、二分查找的条件以及优缺点
条件:针对有序数组(元素从小到大或从大到小)
优点:查询速度较快,时间复杂度为O(n)
缺点:有硬性条件的限制,而且即使查到后,插入与删除困难。
三、图片详解

四、代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 15
int main()
{
int i, number, top, bott, mid, loca, a[N], flag = , sign;
char c;
printf("enter data \n");
scanf("%d", &a[]);
i = ;
while (i<N)
{
scanf("%d", &a[i]);
if (a[i]>=a[i-])
{
i++;
}
else
{
printf("enter this data again: \n");
}
}
printf("\n ");
for (i = ; i < N; i++)
{
printf("%5d", a[i]);
}
printf("\n ");
while (flag)
{
printf("input number to look for:");
scanf("%d", &number);
sign = ;
top = ;//top 是查找区间的其实位置
bott = N - ;//bott是查找区间的最末位置
if ((number<a[])||(number>a[N-]))//要查找的数不在查找区间
{
loca = -;//表示找不到
}
while ((!sign)&&(top<bott))
{
mid = (top + bott) / ;
if (number==a[mid])
{
loca = mid;
printf("Has found %d,its position is %d \n", number, loca + );
sign = ;
}
else if (number < a[mid])
{
bott = mid - ;
}
else
{
top = mid + ;
}
}
if (!sign||loca==-)
{
printf("can not find %d. \n", number);
}
printf("continue or not?(Y/N)");
scanf("%c", &c);
if (c=='N'||c=='n')
{
flag = ;
}
}
}
折半查找(C语言)的更多相关文章
- C语言查找算法之顺序查找、二分查找(折半查找)
		C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ... 
- C语言折半查找法练习题冒泡排序
		C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ... 
- C语言程序设计:二分查找(折半查找)
		目录 C语言程序设计:二分查找(折半查找) 1.什么是二分查找 2.二分查找的优点 3.二分查找的缺点 4.二分查找原理 5.源代码实现 6.后话 C语言程序设计:二分查找(折半查找) 1.什么是二分 ... 
- C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。
		作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1) 输入10个无序的整数.(2) 用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3) 要求任意输入一个整数 ... 
- c语言折半查找
		折半查找又称为二分查找,它的前提是线性表中的记录必须是有序的(通常从小到大有序),线性表必须采用顺序存储. 折半查找的基本思想是 : 在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等 ... 
- C语言数组之冒泡排序+折半查找法(二分查找)
		冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ... 
- C语言程序设计100例之(21):折半查找
		例21 折半查找 问题描述 顺序查找是一种最简单和最基本的检索方法.其基本思想是:从检索表的一端(如表中第一个记录或最后一个记录)开始,逐个进行记录的关键字和给定值的比较.若某个记录的关键字和给定值 ... 
- C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。
		//假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ... 
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
		今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ... 
随机推荐
- linux C 程序内存布局
			参考: 1. http://www.cnblogs.com/clover-toeic/p/3754433.html 2. http://www.cnblogs.com/jacksu-tencent/p ... 
- 怎样在linux下对U盘进行格式化和分区
			说明,为了不做无用功,首先必须卸载要分区的设备,分区才能执行成功.通过命令umount /media/?? 或者umount /mnt/??? 看你的实际情况,这一步必不可少.1.首先通过命令fdis ... 
- Django加载静态网页模板
			Django加载静态网页模板 步骤: 第一步:在子系统blog根目录下新建模版目录templates,里面新建一个login.html <!DOCTYPE html> <html l ... 
- 2017-2018-1 信息安全技术 实验二 20155201——Windows口令破解
			2017-2018-1 信息安全技术 实验二 20155201--Windows口令破解 一.实验原理 口令破解方法 口令破解主要有两种方法:字典破解和暴力破解. 字典破解是指通过破解者对管理员的了解 ... 
- springboot属性类自动加载配置文件中的值
			springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ... 
- [PyTorch]论文pytorch复现中遇到的BUG
			目录 1. zip argument #1 must support iteration 2. torch.nn.DataParallel 3. model.state_dict() 1. zip a ... 
- IDEA上面如何添加创建的文件类型
			首先在IDEA --> new 一个文件的时候 以 创建vue文件为例子,来添加vue文件类型文件 选项 edit file templates 添加 这样就OK了 转载需注明出处,谢谢! au ... 
- python 十进制数转二进制数
			def convertToBinary(n): """Function to print binary number for the input decimal usin ... 
- PHP获得真实客户端的真实时用到的IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
			REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIENT_IP 是代理服务器发送的HTTP头. ... 
- tp5集成淘宝,微信,网易,新浪等第三方登录
			tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ... 
