`
异步获取爱
  • 浏览: 80005 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论

二分搜寻法(搜寻原则的代表)

 
阅读更多
說明
如果搜尋的數列已經有排序,應該儘量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。
解法
在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋的對象,所以無需浪費時間在左邊的數;如果搜尋的數大於所搜尋的對象,則右邊的數無需再搜尋,直接搜尋左邊的數。

所以在二分搜尋法中,將數列不斷的分為兩個部份,每次從分割的部份中取中間數比對,例如要搜尋92於以下的數列,首先中間數索引為(0+9)/2 = 4(索引由0開始):
[3 24 57 57 67 68 83 90 92 95]

由於67小於92,所以轉搜尋右邊的數列:
3 24 57 57 67 [68 83 90 92 95]

由於90小於92,再搜尋右邊的數列,這次就找到所要的數了:
3 24 57 57 67 68 83 90 [92 95]

public class Search {
    public static int binary(int[] number, int des) {
        int low = 0; 
        int upper = number.length - 1; 

        while(low <= upper) { 
            int mid = (low+upper) / 2; 
            if(number[mid] < des) 
                low = mid+1; 
            else if(number[mid] > des) 
                upper = mid - 1; 
            else 
                return mid; 
        } 

        return -1; 
    }
    
    public static void main(String[] args) {
        int[] number = {1, 2, 3, 4, 6, 7, 8};
        int find = Search.binary(number, 2);
        System.out.println(find >= 0 ? "找到數值於索引" + find : "找不到數值"); 
    }
} 
分享到:
评论

相关推荐

    C经典算法之二分搜寻法(搜寻原则的代表)

    ### C经典算法之二分搜寻法(搜寻原则的代表) #### 一、二分搜寻法原理 二分搜寻法(Binary Search),又称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。它的工作原理是将数组中间位置的值与目标值...

    已排序数组三分搜索法的研究

    这种方法类似于二分搜索,但每次可以排除掉三分之一的数据,而不是一半,从而在某些情况下提供更好的性能。 #### 分析与应用: **1. 原理详解:** - **初始化:** 设定搜索范围为整个数组,即左右边界为数组的...

    C语言经典算法大全(程序员必备).rar

    � 排序 得分排行 选择、插入、气泡排序 Shell 排序法 - 改良的...二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 � 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵......

    java开发经典算法

    二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 堆叠 - 使用阵列实作 堆叠 - 使用链结实作(C 语言动态记忆体宣告) 堆叠 - 使用 Java 作物件封装 佇列(队列) - 使用阵列实作 佇列(队列) - 使用链结实...

    C-Program-examples.rar_2维码 C语言_c 卡牌游戏_字串核对_背包问题_蒙塔卡罗法

    河内塔 ...二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵 对C语言的学习非常有用。

    c语言经典算法包括老掉牙,汉诺塔,三色旗

    老掉牙 河内塔 巴式数列 巴斯卡三角形 ...二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵

    C语言经典算法大全

     老掉牙 河内塔 费式数列 ...二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法  矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵

    经典算法(c&java版)

    • 二分搜寻法(搜寻原则的代表) • 插补搜寻法 • 费氏搜寻法 矩阵 • 稀疏矩阵 • 多维矩阵转一维矩阵 • 上三角、下三角、对称矩阵 • 奇数魔方阵 • 4N 魔方阵 • 2(2N+1) 魔方阵 堆栈、队列 • ...

    数据结构与算法

    二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵 堆叠、伫列 堆叠 - 使用阵列实作 堆叠 - ...

    java各种经典算法

    二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵 堆叠、伫列 堆叠 - 使用阵列实作 堆叠 - ...

    经典常用算法 河内塔

    二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵 堆叠、伫列 堆叠 - 使用阵列实作 堆叠 - ...

    Java和C语言实现各种经典算法(含代码图例)

    二分搜寻法(搜寻原则的代表) 插补搜寻法 费氏搜寻法 矩阵 稀疏矩阵 多维矩阵转一维矩阵 上三角、下三角、对称矩阵 奇数魔方阵 4N 魔方阵 2(2N+1) 魔方阵 堆叠、伫列 堆叠 - 使用阵列实作 堆叠 - ...

    k-近邻点估计点云法向量,及3D-pointcloud

    点云法向量是3D空间中描述表面方向的关键元素,它表示了点云中每个点表面局部的正向。在计算机视觉、机器人导航、3D建模等领域,理解和计算点云的法向量至关重要。k-近邻点估计法(k-Nearest Neighbors, k-NN)是一...

    仿百度搜索提示(代码高度规范)

    对于大量数据,可能需要优化查找算法,如Trie树或二分查找,以提高性能。 六、前后端通信 为了获取搜索建议,前端需要与后端进行通信。这可能涉及JSON格式的数据交换,以及HTTP协议的理解。在发送请求时,要确保...

    K-近邻法的文本分类算法分析与改进

    K-近邻法是一种在数据挖掘领域内广泛应用的文本分类算法,它通过分析文档特征向量在向量空间模型中的位置来执行分类任务。该算法在处理多类文本数据时表现出色,原因在于它算法结构简单,易于实现,并且在很多情况下...

    二级分类demo

    【二级分类demo】是一个模拟京东、天猫等电商平台产品分类界面的示例项目,旨在帮助开发者快速构建类似功能。这个demo的核心在于实现一个清晰、易用的二级分类展示系统,允许用户方便地浏览和筛选不同类别下的商品。...

Global site tag (gtag.js) - Google Analytics