精华内容
下载资源
问答
  • 折半查找法

    2020-03-21 18:00:32
    题目中的折半查找法又称折半查找法,优点是次数少,查找速度快,平均查找性能好;其缺点是要求待查找的数据是有序的,且插入和删除时需移动大量数据。 代码如下: //折半查找该数是数组中的第几个元素的值。如果不...

    在这里插入图片描述

    题目中的折半查找法又称折半查找法,优点是次数少,查找速度快,平均查找性能好;其缺点是要求待查找的数据是有序的,且插入和删除时需移动大量数据。

    在这里插入图片描述
    代码如下:

    //折半查找该数是数组中的第几个元素的值。如果不在数组中,输出无此数
    #include <stdio.h>
    int BinSerch(int x,int *arr,int len)
    {
        int low = 0;//下标的最小值
        int high = len - 1;//下标的最大值
        int mid;
        while(low<=high)
        {
            mid = (low+high)/2;
            if(x == arr[mid])
            {
                return mid;
            }
            else if(x<arr[mid])
            {
                low = mid+1;
            }
            else
            {
                high = mid-1;
            }
        }
        return -1;
    }
    int main()
    {
        int arr[] =  {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
        int index = BinSerch(14,arr,sizeof(arr)/sizeof(arr[0]));
        if(index >= 0)
    	{
    		printf("下标为%d(从0开始),数值为%d\n",index,arr[index]);
    	}
    	else
    	{
    		printf("无此数\n");
    	}
        return 0;
    }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • 内层循环N-1-i(控制每轮需要比较的次数)。];int i;//循环接收用户输入的元素;iprintf();scanf("%d",&num[i]);};iint j;;j]){ //判断判断元素和后一个元素大小,如果前面元素大,则交换位...

    冒泡排序算法

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

    口诀: 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. ...

    展开全文
  • 二分查找法(折半查找法
    二分查找用法

    1、二分查找要求

    使用二分查找算法,必须是一个有序的list(列表),为什么必须是有序list,请继续阅读方便理解。
    

    2、什么时候使用二分查找

    当在一个有序list中,需要查询一个值,而这个值不确定在什么位置时,使用该算法可以通过极少的查询次数得到结果;
    而使用简单查找,如果这个值在list的最后出现就需要查询列表长度的次数才可以查到。
    

    也就是说,对于包含n个元素的列表,用二分查找最多需要 log ⁡ 2 n \log_{2}n log2n,而简单查找最多需要n步。
    这里会用到一个公式 log ⁡ 2 n \log_{2}n log2n,“对数”:

    3、什么是对数?

    例: log ⁡ 2 8 \log_{2}8 log28 相当于问“将多少个2相乘的结果为8”.答案是3个2,因此, log ⁡ 2 8 \log_{2}8 log28=3,对数是幂运算的逆运算,通过一个例子可以快速理解:

    幂运算对数
    2 3 2^3 23 = 8 log ⁡ 2 8 \log_{2}8 log28 = 3
    2 4 2^4 24 = 16 log ⁡ 2 16 \log_{2}16 log216 = 4
    2 5 2^5 25 = 32 log ⁡ 2 32 \log_{2}32 log232 = 5
    1 0 2 10^2 102 = 100 log ⁡ 10 100 \log_{10}100 log10100 = 2
    1 0 3 10^3 103 = 1000 log ⁡ 10 1000 \log_{10}1000 log101000 = 3

    4、二分查找法(折半查找法)

    
    /**
     * 二分查找法
     * @author syy
     * @DateTime  2019-11-11T14:11:55+0800
     * @param     [array]                   $array  [目标数组]
     * @param     [int]                   $search [查找值]
     * @return    [type]                           [description]
     */
    function binarySearch($array, $search)
    {
    	//左侧
    	$left = 0;
    	//右侧
    	$right = sizeof($array);
    
    	while ($left < $right) {
    		//中间值
    		$mid = intval(($left + $right)/2);
    
    		if ($array[$mid] > $search) {
    
    			$right = $mid - 1;
    
    		} elseif ($array[$mid] < $search) {
    
    			$left = $mid + 1;
    
    		} else {
    
    			return $mid;
    
    		}
    
    	}
    
    	return false;
    }
    
    $array = [3, 24, 45, 65, 345, 644, 3456, 6534, 6535, 7641, 7834];
    var_dump(binarySearch($array, 7834));
    

    5、运行时间

    简单查找,需要逐个的查询,如果list包含100个数字,最多需要100次。如果10000个数字,最多需要10000次。也就是说,最多的查询次数与列表长度相同,这被称为线性时间(linear time)。
    二分查找不同,如list包含100个数字,最多需要查7次。如果10000个数字,最多需要14次!二分查找的运行时间对数时间(或log时间)
    
    元素个数简单查找(最大次数)二分查找(最大次数)
    100100次7次
    1000010000次14次
    时间线性时间O(n)对数时间O(log n)
    展开全文
  • c语言:折半查找法(二分查找法)

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

    折半查找法(half-interval search)

    优点:比较次数少,查找速度快,平均性能好

    缺点:是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

    注意:折半查找法仅适用于对已有顺序的数组、数据进行操作!!!

    例如:要在数组arr[]={8,7,9,6,4,1,2,5,3,10,11};中查找key=7的位置;首先,我们要先将数组arr中的数据成员进行排序。arr[]={1,2,3,4,5,6,7,8,9,10,11};

    如图所示:将该组数据小端记作low,大端记作high,中间值记作mid;
    二分法查找时,将所查找的key与mid比较,例如key=7,即可缩小查找范围在mid和high之间; 

    如图所示即可找到key=low=7;
    注意:(敲黑板)如果中间数mid不是整数,需要进行取整。

    C语言实现:

    #include<stdio.h>
    int BinSearch(int arr[],int len,int key)                          //折半查找法(二分法)
    {
    	int low=0;                         //定义初始最小
    	int high=len-1;                 //定义初始最大
    	int mid;                            //定义中间值
    	while(low<=high)
    	{
    		mid=(low+high)/2;              //找中间值
    		if(key==arr[mid])               //判断min与key是否相等
    			return mid;    
    		else if(key>arr[mid])             //如果key>mid  则新区间为[mid+1,high]
    			low=mid+1;
    		else                                       //如果key<mid  则新区间为[low,mid-1]
    			high=mid-1;
    	}
    	return -1;                             //如果数组中无目标值key,则返回 -1 ;
    }
    int main()
    {
    	int arr[]={1,2,3,4,5,6,7,8,9,10,11};                      //首先要对数组arr进行排序
    	printf("%d \n",BinSearch(arr,(sizeof(arr)/sizeof(arr[0])),7));
    	return 0;
    }
    
    

    c++实现:

    #include<iostream>
    #include<string>
    #include<Windows.h>
    #include<cstring>
    #define MAXN 10010
    using namespace std;
    int main()
    {
    	int n, val;
    	int a[MAXN];
    	int st, en, mid;
    	cin >> n;
    	st = 1;en = n;
    	for (int i = 1;i <= n;i++) cin >> a[i];
    	cin >> val;
    	while (st <= en)
    	{
    		mid = (st + en) >> 1;
    		if (a[mid] == val) {
    			cout << mid << endl;
    			system("pause");
    			return 0;
    		}
    		else if (a[mid] > val) {
    			en = mid - 1;
    		}
    		else st = mid + 1;
    	}
    	cout << "-1" << endl;
    	system("pause");
    	return 0;
    }
    

     

    展开全文
  • 折半查找法(二分查找)  概念:分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 思路: 定义三个变量...
  • 【查找算法】折半查找法

    千次阅读 2020-02-20 17:08:09
    本篇文章将介绍折半查找算法。 文章目录何为折半查找?算法实现递归实现效率分析 何为折半查找? 上一篇文章介绍了顺序查找算法,我们知道,虽然顺序查找算法适用性高,但效率太低,那么能不能在此基础上继续提高...
  • 折半查找法优缺点

    2021-06-10 21:59:48
    Bentley在他的著作《Writing Correct ...折半查找法的优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为有序表,且插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 ...
  • 折半查找法 1.优点在于比较的次数比较少,对于想要查找的数能够快速的找到,耗费的时间比较少。 2.缺点在于这个方法是要求待查找的表为有序的,并且插入删除比较的困难。 一.用一维数组进行举例: 例如,一个一维...
  • 静态查找:顺序查找和折半查找法

    千次阅读 2017-06-09 15:18:18
    一、静态查找:  只是起查询或检索的作用,不涉及插入、删除,反之为动态查找。 二、顺序查找  顺序查找过程中往往设置监视哨,在查找过程中不用每一步都检查整个表是否查找完毕。  假设,每个元素的查找概率...
  • #include #include #include using namespace std; class Find { private: int n; public: ... cout用折半法找的次数为"; break; } } } }; int main() { Find f; f.find(); return 0; }
  • 折半查找法的温习

    2017-07-26 12:18:00
    折半查找法适合于1采用顺序存储结构的2必须按照关键字大小排序的序列查找 如代码所示: 1 #include <stdio.h> 2 3 int BinSearch(int a[], int length, int k) 4 { 5 int low = 0, high = ...
  • 折半查找法(基于有序数组)

    千次阅读 2018-10-07 18:13:25
    折半查找的方法优点: 比较次数少,查找速度快,平均性能好,要求待查表为有序表 存储结构一定是顺序结构 代码实现: #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; ...
  • 西工大C 毕设论文:折半查找法演示器,里面包括了一个毕业论文的模板,本程序演示的功能是折半查找法,测试时请输入你想要查找数据的数据表列的数据个数(1--50),还需要输入你要在其中查找数据的数据表列(%d个数据...
  • 1.顺序查找 顾名思义,就是按顺序往下一个一个查找,找到时返回,最差的情况是未找到并且全部遍历了一遍,这是消耗时间最长的一个方法 1.1代码实例:顺序查找 //顺序查找 int SeqSearch(RecType R[],KeyType x,int ...
  • 原理 优缺点 程序范例 原理折半查找的原理是将排序好的数列分割成两份,然后将要查找的数字与中间位置的...优缺点折半查找的优点在于比较次数少,查找速度快,平均性能好。 折半查找的缺点在于要求待查表为有序表,且
  • 折半查找法的两种实现 折半查找法的两种实现 折半查找法: 在有序表中,把待查找数据值与查找范围的中间元素值进行比较,会有三种情况出现: 1)待查找数据值与中间元素值正好相等,则返回中间元素值的索引...
  • 二分查找法(binary search)也称为折半查找法,用来查找一组有序的记录数组中的某一记录,其基本思想是:将记录按有序化(递增或递减)排列,在查找过程中如果要找的元素值小于该中点元素,则将待查序列缩小为左半...
  • 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半...
  • 折半查找法 在有序数组中查找时 从数组的中间元素开始查找,如果中间元素正好是要查找的元素,则搜索过程结束, 如果所找元素大于(小于)中间元素,则在数组大于(小于)中间元素的那一半中查找, 每一次跟开始一样...
  • public int searchNumber(double num, boolean updown) {// 折半查找算法 int left = 0, right = Array.length - 1, middle = -1; while (left ) { middle = (left + right) / 2; if (num == Array[middle]) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,416
精华内容 3,366
关键字:

折半查找法的查找次数