精华内容
下载资源
问答
  • 折半查找定义 折半查找算法实现及查找过程 折半查找判定树 查找成功 查找失败 总结 补充 链接 查找成功 查找失败 算法思路 算法实现 折半查找判定树 折半查找ASL 折半查找性能 总结 ...

    折半查找定义

    在这里插入图片描述

    折半查找算法实现及查找过程

    public int Binary_Search(int[] a,int n,int key){
    		int low=1,high=n,mid;
    		while(low<=high){
    			mid=(int)((low+high)/2);
    			if(key<a[mid])
    				high=mid-1;
    			else if(key>a[mid])
    				low=mid+1;
    			else return mid;
    		}
    		return 0;
    }
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    折半查找判定树

    查找成功
    在这里插入图片描述
    查找失败
    在这里插入图片描述

    总结

    在这里插入图片描述
    在这里插入图片描述

    补充

    链接
    查找成功
    在这里插入图片描述
    查找失败
    在这里插入图片描述
    在这里插入图片描述
    算法思路
    在这里插入图片描述
    算法实现
    在这里插入图片描述
    在这里插入图片描述
    折半查找判定树
    在这里插入图片描述
    折半查找ASL
    在这里插入图片描述
    在这里插入图片描述
    折半查找性能
    在这里插入图片描述
    总结
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)折半查找(二分查找)
  • 算法 - 折半查找(C#)

    万次阅读 多人点赞 2019-03-14 20:09:56
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!... * [折半查找的前提]: * 1、待查找序列必须采用顺序存储结构。 * 2、待查找序列必须是按关键字大小有序排列。 * * 时间复杂度:O(lo...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

    /*
     * Recursive Binary Search - by Chimomo
     *
     * [折半查找的前提]:
     * 1、待查找序列必须采用顺序存储结构。
     * 2、待查找序列必须是按关键字大小有序排列。
     *
     * 时间复杂度:O(log2n)
     */
    
    namespace RecursiveBinarySearch
    {
        using System;
    
        /// <summary>
        /// The program.
        /// </summary>
        internal class Program
        {
            /// <summary>
            /// Entry point into console application.
            /// </summary>
            public static void Main()
            {
                int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
                Console.WriteLine(BinarySearch(a, 6, 0, 9));
            }
    
            /// <summary>
            /// 在下界为low,上界为high的有序数组a中折半查找数据元素x(递归查找)。
            /// </summary>
            /// <param name="arr">
            /// 待查找数组。
            /// </param>
            /// <param name="x">
            /// 目标元素。
            /// </param>
            /// <param name="low">
            /// 数组元素下标的下界。
            /// </param>
            /// <param name="high">
            /// 数组元素下标的上界。
            /// </param>
            /// <returns>
            /// 若查找到目标元素则返回该目标元素在数组中的下标;否则返回-1。
            /// </returns>
            private static int BinarySearch(int[] arr, int x, int low, int high)
            {
                if (low > high)
                {
                    return -1;
                }
    
                int mid = (low + high) / 2;
                if (x == arr[mid])
                {
                    return mid;
                }
    
                return x < arr[mid] ? BinarySearch(arr, x, low, mid - 1) : BinarySearch(arr, x, mid + 1, high);
            }
        }
    }
    
    // Output:
    /*
    5
    
    */
    /*
     * Non-Recursive Binary Search - by Chimomo
     *
     * [折半查找的前提]:
     * 1、待查找序列必须采用顺序存储结构。
     * 2、待查找序列必须是按关键字大小有序排列。
     *
     * 时间复杂度:O(log2n)
     */
    
    namespace NonRecursiveBinarySearch
    {
        using System;
    
        /// <summary>
        /// The program.
        /// </summary>
        internal class Program
        {
            /// <summary>
            /// Entry point into console application.
            /// </summary>
            public static void Main()
            {
                int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
                Console.WriteLine(BinarySearch(a, 6, 9));
            }
    
            /// <summary>
            /// 在长度为n的有序数组arr中查找值为x的元素(非递归查找)。
            /// </summary>
            /// <param name="arr">
            /// 待查找数组。
            /// </param>
            /// <param name="x">
            /// 目标元素。
            /// </param>
            /// <param name="n">
            /// 数组长度。
            /// </param>
            /// <returns>
            /// 若查找到目标元素则返回该目标元素在数组中的下标;否则返回-1。
            /// </returns>
            private static int BinarySearch(int[] arr, int x, int n)
            {
                int low = 0;
                int high = n - 1;
                while (low <= high)
                {
                    int mid = (low + high) / 2;
                    if (arr[mid] == x)
                    {
                        return mid;
                    }
    
                    if (arr[mid] < x)
                    {
                        low = mid + 1;
                    }
                    else
                    {
                        high = mid - 1;
                    }
                }
    
                return -1;
            }
        }
    }
    
    // Output:
    /*
    5
    
    */

     

    展开全文
  • 折半查找

    2020-09-14 12:55:03
    折半查找又称为二分查找,它使用于有序的顺序表。 二 折半查找的基本思想 折半查找首先将定值key与表中中间位置的元素比较,若相等,则查找成功,并返回该元素的存储位置;若不等,则所需查找到的元素只能在中间...

    一 概述

    折半查找又称为二分查找,它使用于有序的顺序表。

    二 折半查找的基本思想

    折半查找首先将定值key与表中中间位置的元素比较,若相等,则查找成功,并返回该元素的存储位置;若不等,则所需查找到的元素只能在中间元素以外的前半部分或后半部分;例如,在查找表升序排列时,若给定值key大于中间元素,则所查找的元素只可能在后半部分。然后就在缩小的范围内继续进行同样的查找,如此重复,知道找到为止,或确定表中没有所需要查找的元素,则查找失败,返回查找失败的信息。

    折半查找的数据结构:

    int Binary_Search(SeqList L,ElemType key) {
        
        int low = 0,high = L.TableLen-1,mid;
        while(low<=high) {
            mid = (low+high)/2;    //取中间位置
            if(L.elem[mid] == key){
                return mid;        //查找成功则返回所在位置
            }else if(L.elem[mid] > key){
                high = mid - 1;    //从前半部分继续查找
            }else {
                low = high + 1;    //从后半部分继续查找
            }
            return -1;             //查找失败,返回-1
        }
    }

    由此可见,折半查找需要方便的定位查找区域,所以它要求线性表必须具有随机存取的特性。因此,该查找法仅适合于顺序存储结构,不适合于链式存储结构,且要求元素按照关键字有序排列。

    折半查找的时间复杂度为O(log2^n),平均情况下比顺序查找的效率高。

    展开全文
  • 查找 —— 折半查找

    2021-09-02 17:16:22
    折半查找(算法思想、实现代码、效率分析) 折半查找判定树(特点、绘制) 1.算法思想 2.实现代码 3.查找效率分析 3.折半查找判定树构造(向上取整) 特点1:知道结点的个数就能画出折半查找判定树、进而算出...

    本文主要介绍以下几方面的知识:

    1. 折半查找(算法思想、实现代码、效率分析)
    2. 折半查找判定树(特点、绘制)
      在这里插入图片描述

    1.算法思想
    加粗样式
    2.实现代码
    在这里插入图片描述
    3.查找效率分析
    在这里插入图片描述
    3.折半查找判定树构造(向上取整)

    • 特点1:知道结点的个数就能画出折半查找判定树、进而算出ASL
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 特点2:折半查找判定树一定是平衡二叉树(注意树高)
      在这里插入图片描述
    • 特点3:折半查找判定树一定是二叉排序树(失败结点个数)
      在这里插入图片描述
    • 注:向上取整也有类似特性

    4.折半查找时间复杂度
    在这里插入图片描述

    展开全文
  • /*折半查找*/class TwoSearch{//折半查找可以提高效率,但必须得保证是有序的数组public static int halfSearch(int[] arr,int key)//折半查找函数{int min,max,mid;min=0;max=arr.length-1;mid=(min+max)/2;while...
  • 算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。(前提) 折半查找和递归折半查找详解(二分法查找,递归二分法查找)
  • 顺序查找+折半查找

    2019-03-02 19:23:35
    本程序共包含2个查找程序,分别是顺序查找和折半查找
  • 【查找】折半查找

    万次阅读 多人点赞 2019-01-28 02:40:22
    折半查找 如果从文件中读取的数据记录的关键字是有序排列的(递增的或是递减的),则可以用一种更有效率的查找方法来查找文件中的记录,这就是折半查找法,又称为二分搜索。 折半查找的基本思想:减少查找序列的...
  • 查找之折半查找

    2017-12-03 16:22:29
    名称:折半查找 说明:这是比顺序查找要更有效率的一种方式。它是按照每次减少一半的规模进行查找的。但是其存储结构必须要是顺序结构,即连续的存储空间,而且元素间必须有序。这就是我在上节顺序查找中说到的,...
  • 折半查找验证

    2017-10-10 14:48:11
    大学数据结构,折半查找的验证的实现代码,基础基础基础

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,147
精华内容 15,658
关键字:

折半查找55