`
greatghoul
  • 浏览: 147721 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

二分法查找,哎,终究挤不进那10%

阅读更多

看到JavaEye上一个“很老”的新闻(囧) - 你是那10%可以实现二分查找算法的程序员吗?

 

哎,大学学的那些东西,已经忘记得差不多了,当作回顾吧,按照作者的约定,写一个试试。

 

 

<script type="text/javascript">
function binarySearch(arr, a) {
    var low = 0, high = arr.length - 1, index = -1;
    
    if (a < arr[low] || a > arr[high]) 
        return index;
        
    while (low <= high) {
        var i = parseInt((low+high)/2)
        var b = arr[i];
        if (a == b) {
            index = i;
            break;
        } else if (a < b) {
            high = i - 1;
        } else {
            low = i + 1;
        }
    }
    
    return index;
}

function println(str) {
    document.write((str||'') + "<br/>");
}

function testSearch(arr, values) {
    for (var i = 0; i < values.length; i++) {
        println("found " + values[i] + " at " + binarySearch(arr, values[i]));
    }
}

var arr = [1, 3, 4, 12, 88, 168, 169, 172];
var arr1 = [1, 3, 4, 12, 88, 168, 169];
var test = [0, 5, 89, 167.5, 199];

println("[" + arr + "]");
testSearch(arr, arr);
testSearch(arr, test);
println();
println("[" + arr1 + "]");
testSearch(arr1, arr1);
testSearch(arr1, test);
</script>
 

虽然很快写完,但还是漏了东西, 写成了  high = i - 1; 和  low = i + 1; 于是乎死循环,悲哀,看来知识这东西,还得经常回顾。

 

分享到:
评论
1 楼 lyyu1988 2011-05-21  
二分查找要求查找的数组按顺序排列!我都老长时间没写过了,闲了写一个,呵呵!

相关推荐

    数据结构快速排序二分法查找

    "数据结构快速排序二分法查找" 快速排序和二分法查找是数据结构中两个非常重要的概念,它们都是解决实际问题的重要工具。在本文中,我们将详细介绍快速排序和二分法查找的原理、实现和应用。 快速排序 快速排序...

    java算法——二分法查找

    二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界

    c语言 二分法查找

    ### C语言中的二分法查找 #### 知识点概览 1. **二分法查找的基本原理** 2. **二分法查找的适用场景** 3. **算法实现细节** 4. **时间复杂度分析** 5. **空间复杂度分析** 6. **代码示例与分析** 7. **常见问题及...

    二分法查找算法代码 c语言实现

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它通过不断缩小搜索范围,将查找复杂度降低到对数级别,显著提高了查找效率。在这个资源包中,我们重点关注的是使用C语言实现的二分法查找...

    Java程序设计基础:一维数组应用查找二分法查找).pptx

    ——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...

    C语言实现的二分法快速查找|二分法排序|二分法查找C#

    如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 ##...

    图解数据结构二分法查找法

    ### 图解数据结构:二分法查找法 #### 一、引言 在计算机科学领域,数据结构与算法是核心的基础知识。其中,查找算法作为数据处理中的关键环节,其效率直接影响着系统的性能。二分查找法(Binary Search),作为一...

    二分法查找源码

    二分法查找和顺序查找 排序后二分法

    二分法查找MATLAB程序

    使用二分法查找的MATLAB程序编写,方便刚接触MATLAB的同学分享学习。

    改进的二分法查找

    二分法查找是一种在有序数据集中高效定位特定元素的算法,其基本原理是将有序数列对半分隔,通过比较目标值与中间值的关系来确定查找的范围,进而缩小搜索区间,直至找到目标值或判断目标值不存在。在含有n个元素的...

    二分法数据查找C语言实现

    ### 二分法数据查找C语言实现 #### 知识点概述 二分查找(Binary Search),也称为折半查找,是一种在有序数组中查找某一特定元素的搜索算法。二分查找采用分而治之的策略,通过将查找区间分成前后两部分来减少...

    二分法查找

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将待搜索区域减半,直到找到目标元素或者确定不存在为止。这种方法大大减少了查找所需的平均时间复杂度,是...

    易语言有序二分法查找

    **易语言有序二分法查找**是一种在已排序的数据序列中快速查找特定元素的高效算法。易语言,作为中国本土的编程语言,以其简洁的语句和易学性深受初学者喜爱。在这个主题中,我们将深入探讨有序二分法查找的原理、...

    二分法查找在PLC编程中的应用.pdf

    二分法查找是一种高效的查找算法,在有序数组中尤其适用。其基本思想是从已排序数组的中间元素开始查找,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值...

    二分法查找(c++版)

    二分法查找,又称折半查找,是一种在有序数组中高效地查找特定元素的搜索算法。这种方法的关键在于利用数组的有序性,通过不断缩小搜索范围来快速定位目标值。在这个C++版本的二分法查找中,我们将深入理解其原理,...

    学学Python_34函数_创建函数04 二分法查找

    本篇文章将聚焦于一个重要的查找算法——二分法查找,它在处理大规模有序数据时表现出极高的效率。 二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是通过不断将待搜索区间减半...

    要求演示二分法查找过程

    题目要求演示二分法查找过程,用箭头跟踪指示出二分查找过程中的查找位置。设计思想为用两个数组实现,一个用于存数据另一个用来存箭头。只要存箭头的下标于每次查找的数的下标相等就可以实现,难点在于如何把数得...

    易语言源码有序二分法查找易语言源码.rar

    易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar 易语言源码有序二分法查找易语言源码.rar ...

    java 冒泡算法和插入法排序,二分法查找

    如果目标值大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样在这一半的中间元素开始。这样,每次比较都使搜索范围缩小一半。二分法查找的时间复杂度为O(log n),比线性查找效率高很多。 ...

    二分法查找数组

    在探讨“二分法查找数组”这一主题时,我们深入解析了其算法原理、实现细节以及性能优势。本文将从二分法查找的基本概念出发,...此外,对于非有序数据结构,二分法查找并不适用,选择合适的算法是提升程序性能的关键。

Global site tag (gtag.js) - Google Analytics