精华内容
下载资源
问答
  • #include#include//子函数int binary_search(int arr[],int k,int left,int right){while(left<=right)//建立一个循坏{int mid=left+(right-left)/2;//下标中间值if(arr[mid]>k){right=mid-1;...

    #include

    #include

    //子函数

    int binary_search(int arr[],int k,int left,int right)

    {

    while(left<=right)//建立一个循坏

    {

    int mid=left+(right-left)/2;//下标中间值

    if(arr[mid]>k)

    {

    right=mid-1;

    }

    else if(arr[mid]

    left=mid+1;

    else

    {

    return mid;//走到这就是等于。K就是要找的 ,返回的是下标值

    }

    }

    return -1;//这里即left>right .找不到这个数

    }

    int main()//主函数

    {

    int arr[]={1,2,3,4,5,6,7,8,9,10};

    int left=0;

    int right=sizeof(arr)/sizeof(arr[0])-1;//这个公式只能在arr定义下面用,哪里定义哪里用

    int m=7;

    int binary_search(arr,m,left,right); //不能传值7.可以传常量m=7,

    int ret=binary_search(arr,m,left,right);//????函数声明 函数中包含数组,目标值,范围左下标。范围右下标 ret是返回值,

    if(-1==ret)//ret作为返回值。返回-1即找不到

    printf("找不到啦\n");

    else

    printf("找到啦\n");//ret是函数的返回值,要么-1.找不到、要么下标值mid,即对应要找的值。找到啦

    return 0;

    }

    展开全文
  • 折半查找C语言

    千次阅读 2018-07-21 11:43:35
    题目:有15个数据由小到大顺序存放在一个数组中,输入一个数,要求使用折半查找法查找该数是数组中的第几个元素;如果该数不存在,则输出,没有此数 /** 有15个数据由小到大顺序存放在一个数组中,输入一个数,...

    题目:有15个数据由小到大顺序存放在一个数组中,输入一个数,要求使用折半查找法查找该数是数组中的第几个元素;如果该数不存在,则输出,没有此数

    /**
    有15个数据由小到大顺序存放在一个数组中,输入一个数,要求使用折半查找法查找该数是数组中的第几个元素;如果该数不存在,则输出,没有此数 
    */
    #include<stdio.h>
    #define N 15
    
    int main()
    {
    	void input(int num[]);//函数声明 
    	void search(int num[],int n);//函数声明 
    	int num[N];//数组输入15个数 
    	int n;//要查找的数字 
    	char c;//用于输入字符 
    	int flag=1;//是否继续输入数进行查找
    	input(num); 
    	while(flag)
    	{
    		printf("Please input the number of searching:");
    		scanf("%d",&n);
    		search(num,n);
    		printf("Continue or not(Y/N)?");
    		getchar();//吸收回车符 
    		scanf("%c",&c);
    		if(c == 'n' ||c == 'N')
    		{
    			flag=0;
    		}
    	}
    	return 0;
     } 
     
    void input(int num[])
    {
    	int i=1;//循环变量 
    	printf("Please input the numbers:\n");
    	scanf("%d",&num[0]);//输入第一个数
    	while(i<N)//输入剩下的数 
    	{
    		scanf("%d",&num[i]); 
    		if(num[i-1]<num[i])//判断输入是否 符合从小到大的条件 
    		{
    			i++;
    		}
    		else
    		{
    			printf("Please input the numbers again:\n");
    		}
    	 }
    	 printf("\n");
    	 for(i=0;i<N;i++)//输出15个数 
    	 {
    	 	printf("%5d",num[i]);
    	 }
    	 printf("\n"); 
    }/*input()*/
    
    void search(int num[],int n)
    {
    	int sign=0;// 是否找到,找到为1 
    	int top=0;//折半查找的开始位置 
    	int bott=N-1;//折半查找的末位置 
    	int mid=(top+bott)/2;//折半查找的中间位置 
    	while((sign == 0) && (top <=bott))//折半查找 
    	{
    		if(n == num[mid])//找到 
    	    {
    		printf("Has fund %d,the posision is:%d",n,mid+1);
    		sign=1;
    		}
    		else if(n>num[mid])//如果n大于中间位置的数,向后查找 
    		{
    		top=mid+1;//开始位置变,末位置不变 
    		mid=(top+bott)/2;//中间位置变 
    		}
    		else//如果n小于中间位置的数,向前查找 
    		{
    		bott=mid-1;//开始位置不变,末位置变
    		mid=(top+bott)/2;
    		}
    	} 
    	if(sign == 0)
    	{
    		printf("Can not find!");
    	} 
    }/*search()*/

     

    新手还请大家多多指教!

    展开全文
  • 折半查找法(C语言)#include #define max 20int binary(int x,int list[],int n) /*从list[]中查找x*/{int low,high,mid;low=0;high=n-1;while(low<=high){mid=(low+high)/2; /*折半*/if(xhigh=mid...

    折半查找法(C语言)

    #include

    #define max 20

    int binary(int x,int list[],int n)               /*从list[]中查找x*/

    {

    int low,high,mid;

    low=0;

    high=n-1;

    while(low<=high)

    {

    mid=(low+high)/2;               /*折半*/

    if(x

    high=mid-1;

    else

    if(x>list[mid])                 /*在后半部分查找*/

    low=mid+1;

    else

    return(mid);

    }

    return(-1);

    }

    int getdata(int list[])                   /*输入数组list[]*/

    {

    int num,i;

    printf("total=");

    scanf("%d",&num);

    for(i=0;i

    {

    printf("data[%d]=",i);

    scanf("%d",&list[i]);

    }

    return(num);

    }

    void main()

    {

    int list[max],n,index,x;

    n=getdata(list);

    printf("search key=");              /*输入待查找数据*/

    scanf("%d",&x);

    index=binary(x,list,n);

    if(index>=0)

    printf("data[%d]=%d\n",index,x);

    else

    printf("%d:not found.\n",x);

    }

    ©著作权归作者所有:来自51CTO博客作者hyjiang1989的原创作品,如需转载,请注明出处,否则将追究法律责任

    展开全文
  • } C语言查找算法之顺序查找、二分查找(折半查找) C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或...

    冒泡排序算法

    将相邻的元素进行两两比较,大的向后”冒”, 小的向前”赶”。

    口诀: N个数字来排队,两两比较小靠前

    外层循环N-1(控制需要比较的轮数)。

    内层循环N-1-i(控制每轮需要比较的次数)。

    3305bd25bc9ebd47d6a100c4c45d550d.png

    ];

    int i;

    //循环接收用户输入的元素

    ;i

    printf();

    scanf("%d",&num[i]);

    }

    ;i

    int j;

    ;j

    ]){ //判断判断元素和后一个元素大小,如果前面元素大,则交换位置

    int temp;

    temp=num[j];

    num[j]=num[j+];

    num[j+]=temp;

    }

    }

    }

    //遍历打印数组

    ;i

    printf("%d\t",num[i]);

    }

    二分查找法(折半查找,前提是必须是有序数组)

    原理:将待查找的数字与数组中的中间位置进行比较。

    如果比中间位置的元素值小,去左边查找(更改结束位置)

    如果比中间位置的元素值大,去右边查找(更改起始位置)

    ]={,,,,,,,,,};

    int search;

    printf("请输入你要查找的元素\n");

    scanf("%d",&search);

    int middle;//中间位置

    ;//起始下标,默认第一个元素的下标

    ;//结束下标,默认最后一个元素的下标

    ;//用了记录查询次数

    ;//标记,判断是否有该元素;

    while(left<=right){

    count++;

    middle=(left+right)/;

    if(search>num[middle]){//待查找的元素必中间位置元素的值大,到右边查找,更改起始位置

    left=middle+;

    }else if(search

    right=middle-;

    }else{

    printf("你要查找的要素%d下标为%d",search,middle);

    flag=;

    break;

    }

    }

    ){

    printf("你一共用了%d次查找到该元素\n",count);

    }else{

    printf("你要查找的元素不存在\n");

    }

    C语言查找算法之顺序查找、二分查找&lpar;折半查找&rpar;

    C语言查找算法之顺序查找.二分查找(折半查找),最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 顺序查找 /*顺序查找 顺序查找是在一个已知无(或有序)序队列中找出与给定关键字相同的 ...

    自学Python3&period;6-算法 二分查找算法

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

    Java中常用的查找算法——顺序查找和二分查找

    Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...

    Java基础知识强化60:经典查找之二分查找

    1. 二分查找       二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 比较 ...

    List&lt&semi;T&gt&semi;线性查找和二分查找BinarySearch效率分析

    今天因为要用到List的查找功能,所以写了一段测试代码,测试线性查找和二分查找的性能差距,以决定选择哪种查找方式. 线性查找:Contains,Find,IndexOf都是线性查找. 二分查找:Bin ...

    Java顺序查找、二分查找

    Java顺序查找.二分查找   查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低. 顺序查找 动图演示 详细代码 // 顺序查找 public st ...

    数组查找算法的C语言 实现-----线性查找和二分查找

    线性查找  Linear Search 用户输入学生学号的成绩 二分查找  Binary Search 要求数据表是已经排好序的 程序存在小的瑕疵

    jvascript 顺序查找和二分查找法

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

    &lbrack;剑指Offer&rsqb;53-在排序数组中查找数字&lpar;二分查找&rpar;

    题目一 数字在排序数组中出现的个数 题目描述 统计一个数字在排序数组中出现的次数. 解决思路 写两个二分查找分别找第一个和最后一个该数字,然后可直接出计算有几个该数字.时间复杂度为O(logn). 这 ...

    随机推荐

    Spring的简单demo

    ---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml ...

    Android Listview &amp&semi; Adapter

    Listview主要有两个职责: 将数据填充到布局 处理用户的选择点击等操作 列表的显示需要三个元素: ListVeiw 用来展示列表的View 适配器(Adapter) 用来把数据映射到ListVi ...

    arcgis flexviewer中由Application向widget传值

    arcgis flexviewer所有的小部件类均继承自com.esri.viewer.BaseWidget基类,而BaseWidget又继承了com.esri.viewer.IBaseWidget接 ...

    C连接MySQL数据库开发之Windows环境配置及测试

    一.开发环境 Win8.1 64位.VS2013.MySQL5.5.3764位 MySQL安装目录为:C:\Program Files\MySQL\MySQL Server 5.5 二.配置工程环境 ...

    android签名相关

    生成apk.keystore: 右键工程:Android tools——>Export Signed Application Package后,相册中截图: 一直下一步下一步,成功后jarsig ...

    ubuntu下perl SVG老是make失败

    解决方法是用libgd-svg-perl软件包代替.

    分析java中clone&lpar;&rpar;方法 &lpar;转载&plus;修改&rpar;

    Java中的clone() 方法 java所有的类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制. protected native Object c ...

    Redis主从同步要深入理解?一篇文章足矣!

    前言: 今天想和大家分享有关 Redis 主从同步(也称「复制」)的内容. 我们知道,当有多台 Redis 服务器时,肯定就有一台主服务器和多台从服务器.一般来说,主服务器进行写操作,从服务器进行读操 ...

    广搜迷之RE及迷之WA

    最近做广搜的时候天天迷之RE,经过dalao@口昭寿指点,我把string数组换成了char二维数组就AC了,(然而我并不知道为什么) 传送门 

    sench touch 页面跳转

    下面是我做的一个简单的登录页面登录成功后跳转页面 首页要在app.js 里面添加 1.视图层   登录页面 Ext.define('MyApp.view.Login', { extend: 'Ext. ...

    展开全文
  • 折半查找(C语言)

    2021-06-03 21:53:53
    折半查找法, 也称为二分查找法, 二分搜索, 是一种在有序数组中查找某一特定元素的搜索算法.搜索过程中从数组的中间元素开始, 如果中间元素正好是要查找的元素, 则搜索过程结束;如果某一特定元素大于或者小于中间...
  • 折半查找——C语言

    2018-10-07 21:14:35
    折半查找是一个比较常用的查找方法。相较于最原始的这个 查找过程为:先确定待查找记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。 具体是设立三个指针low,hight,mid,分别指向待查找的...
  • 折半查找的应用前提是数组是一个有序数组。比较数组中间值和查找值的大小关系,然后确定下一步的查找范围,逐次缩小。折半查找的时间复杂度为O(log2(n)),是一种效率很高的查找方式。 程序实现 #include <stdio.h...
  • C语言折半查找法.doc
  • c语言作业(数C语言程序设计实验报告实验名称数组学 院材冶学院专业班级成型1101姓 名李xx学 号2011任课教师徐彬实验时间2012...实验内容编程实现“折半查找”的过程。要求设定一个整型数组存放20个元素,采用直接赋...
  • C语言折半查找法(二分法)的实现

    万次阅读 多人点赞 2019-03-31 20:40:15
    折半查找法也叫做二分查找,顾名思义,就是把数据分成两半,再判断所查找的key在哪一半中,再重复上述步骤知道找到目标key; 注意:(咳咳,敲黑板)折半查找法仅适用于对已有顺序的数组、数据进行操作!!! 很...
  • 折半查找法又称为二分查找法,该方法要求带查找的表是顺序存储结构并且表中的关键字大小有序排列。 查找过程: 先确定待查记录所在的区间,然后逐渐通过待查找值与区间中间值进行比较进而调整区间大小,不断缩小范围...
  • 近期研习C语言,谭浩强《C语言程序设计(第2版)》P167.6原题: 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。因...
  • C语言折半查找法.rar
  • 折半查找法(C语言实现)递归

    千次阅读 2019-11-25 16:31:10
    二分查找(又称为折半查找)是在有序序列中查找比较多的查找算法,基本思路:设有一个从小到大的序列,取中间的元素m进行比较,如果等于需要查找的元素x则返回元素m的下标,若x大于m则再从右边的区间查找,若x小于m...
  • //key:要查找的值 int BinarySearch(int *arr,int length,int key) { //前指针与后指针 int low=0 ,high=length; //中心指针,计算公式如下 int mid = (high+low)/2;//low + (high/low)/2 可以防止数据溢出 //前...
  • 折半查找法/C语言

    2016-03-06 18:32:05
    //无法查找啊返回-1    int left = 0, right = len, mid = (left + right) / 2;   while (left )   {   if (n == a[mid])   {   index = mid;   break;   }   else if (n...
  • c语言折半查找法

    千次阅读 2019-10-15 09:17:48
    # include int BinSearch ( int arr [ ] , int len , int key ) { int low = 0 ; //起始元素 int high ...//右边查找 ...//查找值为0~14 ...运行结果如下:(-1表示未查找到该值)
  • 折半查找法C语言

    千次阅读 2012-09-10 10:56:55
    #include #define max 20 int binary(int x,int list[],int n) /*从list[]中查找x*/ {  int low,high,mid;  low=0;  high=n-1;  while(low  {  mid=(low+high)/2;
  • C语言折半查找法

    2020-01-07 18:16:29
    折半查找2X3-4X2+3X-6=0的一个近似解 #include<stdio.h> #include<math.h> int main() { float x1,x2,x,f1,f2,f; do { printf("Please input.\n"); scanf("%f%f",&x1,&x2); f1=((2*x1-4)*x1...
  • MongoDB管理工具的插件系统MongoDB管理工具 MongoCola的开发已经进入第三个年头了. 官方对于C#驱动的投入不够导致了很多东西都必须自己实现,但是不管怎么样,工具现在已经很强大了. 最近准备着手插件系统的开发,简 .....
  • 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半...
  • C语言简单实现折半查找法

    万次阅读 多人点赞 2018-08-16 08:27:12
    折半查找,又称作二分查找。这个查找的算法的特点,就是,要求数据要是有序的。 1 ,存储结构一定是顺序存储 2 ,关键字大小必须有序排列 算法思想:折半查找只能在有序数列中进行,将待查找的数据与有序数列...
  • 折半查找法也叫做二分查找,顾名思义,就是把数据分成两半,再判断所查找的key在哪一半中,再重复上述步骤知道找到目标key; 注意:折半查找法仅适用于对已有顺序的数组、数据进行操作!!! 很显然,折半查找法相...
  • 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。折半查找算法对静态查找表{5,13,19,21,37,56,64,75,80,88,92}采用...
  • c语言折半查找法(二分查找法)

    千次阅读 2019-07-25 17:53:56
    折半查找法(half-interval search) 优点:比较次数少,查找速度快,平均性能好 缺点:是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 注意:折半查找法仅...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,628
精华内容 1,051
关键字:

折半查找法c语言

c语言 订阅