二分法的适用范围为有序数列,这方面很有局限性。

#include<stdio.h>

//二分查找法
void binary_search(int a[],int start,int mid,int end); int main()
{
int iLength,istars,i,iTimes,iNumber,n;
int a[];
printf("please enter the length of the array:\n ");
scanf("%d",&iLength);
printf("please enter the number:\n");
for(i=;i<iLength;i++)
{
scanf("%d",&a[i]);
} printf("please enter the number that you want:\n");
scanf("%d",&istars);
/*if(n==istars)
{ }
else
{
printf("sorry ,without this number\n");
}*/
binary_search(a,,istars,iLength); }
void binary_search(int a[],int start,int iPut,int end) {
int i,j,k,n;
i=start;
j=end;
k=(i+j)/;
n=;
while(i<j)
//while(i<=k && j>=k) 这个写的本身就有漏洞,就是对整个程序的不理解
{
n++;
if(iPut>a[k])
{
i=k+;
}
if(iPut<a[k])
{
j=k-;
}
if(iPut==a[k])
{
printf("the number need %d times to find......a[%d]=%d\n",n,k,iPut); break;
} }
if(n==0)
printf("failed\n"); }
 这是开始参考书目,自己编写的程序,但是程序本身能准确运行范围内的数字,一旦输入范围外的数字则出现卡壳现象。因此,要在源代码中改进。
#include<stdio.h>

//二分查找法
void binary_search(int a[],int start,int iPut,int end); int main()
{
int iLength,istars,i,iTimes,iNumber,n;
int a[];
printf("please enter the length of the array:\n ");
scanf("%d",&iLength);
printf("please enter the number:\n");
for(i=;i<iLength;i++)
{
scanf("%d",&a[i]);
} printf("please enter the number that you want:\n");
scanf("%d",&istars);
/*if(n==istars)
{ }
else
{
printf("sorry ,without this number\n");
}*/
binary_search(a,,istars,iLength); }
void binary_search(int a[],int start,int iPut,int end) {
int i,j,k,n,m;
m=;
i=start;
j=end; n=;
while(i<j)
//while(i<=k && j>=k) 这个写的本身就有漏洞,就是对整个程序的不理解
{
n++;
k=(i+j)/;//这个为关键!!!!!
if(iPut>a[k])
{
i=k+;
}
if(iPut<a[k])
{
j=k-;
}
if(iPut==a[k])
{
printf("the number need %d times to find......a[%d]=%d\n",n,k,iPut);
m++;
break;
} }
if(m==)
printf("failed\n"); }


第一次代码错误的主要原因为中间值k的位置放错了。k要放在循环之中,要不然无法形成循环,中间值就永远都是中间值,无法利用其的逼近功能,

与此同时编写代码多了,时常会把 if 和while用混,这就需要具体问题,if只执行一次,while则是一个循环,使用while的时候要写上跳出条件,要不然会无休止的运行下去,导致死循环。

用c语言编写二分查找法的更多相关文章

  1. R语言实现二分查找法

    二分查找时间复杂度O(h)=O(log2n),具备非常高的效率,用R处理数据时有时候需要用到二分查找法以便快速定位 Rbisect <- function(lst, value){ low=1 ...

  2. C语言二分查找法

    参考了C语言中折半查找法(二分法)的实现 二分查找算法(C语言实现) 先附上代码 #include<stdio.h> int BinSearch(int arr[],int len,int ...

  3. 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC

    [送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...

  4. InnoDB索引概述,二分查找法,平衡二叉树

    索引是应用程序设计和开发的一个重要方面.如果索引太多,应用的性能可能会受到影响:如果索引太少,对查询性能又会产生影响.要找到一个合适的平衡点,这对应用的性能至关重要. 如果知道数据的使用,从一开始就应 ...

  5. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  6. java for循环和数组--冒泡排序、二分查找法

    //100以内与7相关的数   for(int a=1;a<=100;a++){    if(a%7==0||a%10==7||a/10==7){     System.out.print(a+ ...

  7. 二分查找法 java

    前几天去面试,让我写二分查找法,真是哔了狗! 提了离职申请,没事写写吧! 首先二分查找是在一堆有序的序列中找到指定的结果. public class Erfen { public static int ...

  8. 学习练习 java 二分查找法

    package com.hanqi; import java.util.*; public class Test5 { public static void main(String[] args) { ...

  9. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: package Test; import java.util.Arrays; public class BinarySe ...

随机推荐

  1. Linux下查看某个软件安装路径

    1:如果包是通过yum或者rpm方式安装 [root@localhost yum.repos.d]# rpm -qa //找出系统所有的包,找到对应的文件名 [root@localhost yum.r ...

  2. ios-高仿别踩白块游戏的实现

    先看下效果图片 前几天看到一个游戏叫别踩白块,下载量还挺大几百万了都,下载下来玩了玩看了看,这个游戏还挺简单的.俗话说想一千遍,一万遍不如动手做一遍来的实在.昨晚以及今天白天闲的没事就开搞了,下午六点 ...

  3. RDIFramework.NET(.NET快速开发框架) 答客户问(2014-02-23)

    1.框架的部署安装,服务器端和客户端 答:开发版以上版本支持SOA模式,也即真正的面向服务端的模式,在实际使用过程中,可根据项目的实际需要,来选择性的进行部署(直连模式或SOA模式),如需要分布式应用 ...

  4. JS小数点加减乘除运算后位数增加的解决方案

    /** * 加法运算,避免数据相加小数点后产生多位数和计算精度损失. * * @param num1加数1 | num2加数2 */ function numAdd(num1, num2) { var ...

  5. java虚拟机内部介绍

    一.介绍 java 的内存管理和垃圾回收在某种程度是同一个问题来着.对于java程序员来说,在虚拟机自动内存管理机制的帮助下,不在需要为每一个new操作去写配对的delete/free代码,不容易出现 ...

  6. java的客户端可以连接CPlus的服务端

    今天做的实验,用c++做的服务端,端口号为6000:用java做的客户端,IP为127.0.0.1,port为6000,结果双方可以连接上线: 贴代码: 服务端: #include <winso ...

  7. Learning How To Learn

    1.Practice 2.memory every week for from working memory to long tern memory 3.sleep 4.running promote ...

  8. IOS基础面试题

    最近离职了,找工作,光会做项目,对基础不熟,今天就总结了一点面试题. 废话不多说,上题吧: 1.objective-c中的数字对象都有哪些,简述它们与基本数据类型的区别是什么. 基本类型和C一样,主要 ...

  9. C# 获取sql数据库表列名,及列名说明备注信息

    获取指定表列名及备注: select * from syscolumns where id=object_id(N'表名') SELECT a.name [column], b.name type, ...

  10. Bootstrap 响应式设计

    本教程讲解如何在网页布局中应用响应式设计.在课程中,您将学到响应式 Web 设计.随着移动设备的普及,如何让用户通过移动设备浏览您的网站获得良好的视觉效果,已经是一个不可避免的问题了.响应式 Web ...