美文网首页
kata02:只有10%的程序员能写好的二分查找

kata02:只有10%的程序员能写好的二分查找

作者: jmukirin | 来源:发表于2016-12-10 15:01 被阅读69次

二分查找又称为折半查找, 基本思想是对一个有序的列表去检索. 首先将查找值与列表中间位置上的值比较, 如果相等, 则检索成功. 若查找值小, 则在列表前半部分中继续进行二分查找.若查找值大, 则在列表后半部分中继续进行二分查找. 这样, 经过一次比较就缩小一半的查找区间, 如此进行下去, 直到查找成功或查找失败.

这个kata很简单, 用你熟悉的语言(一种)把二分查找, 实现5次.

目标

这个kata有三个独立的目标:

  1. 当你在写下每种实现的时候, 把你实现过程中的错误也记录下来.
  2. 你说一下你使用的实现优势是什么, 哪一个最可能进入生产环境, 哪一个最好玩, 哪一个最不容易跑起来?
  3. 想出5种方法是很难的, 特别是在想第四种和第五种的时候, 你是怎么突破自我的?

规范

输入int和int数组, 返回也是int(数组中的位置), 如果没查找到返回-1.
chop(int, array_of_int) -> int
这个kata不考性能和效率, 可以假设数组中的元素少于100,000个.

测试数据

这个是我用的测试数据, 你也可以自己构造或者换成适合你使用的语言, 我这里用的是ruby.

def 
    test_chop 
    assert_equal(-1, chop(3, [])) 
    assert_equal(-1, chop(3, [1])) 
    assert_equal(0, chop(1, [1])) 
    # 
    assert_equal(0, chop(1, [1, 3, 5])) 
    assert_equal(1, chop(3, [1, 3, 5])) 
    assert_equal(2, chop(5, [1, 3, 5])) 
    assert_equal(-1, chop(0, [1, 3, 5])) 
    assert_equal(-1, chop(2, [1, 3, 5])) 
    assert_equal(-1, chop(4, [1, 3, 5])) 
    assert_equal(-1, chop(6, [1, 3, 5])) 
    # 
    assert_equal(0, chop(1, [1, 3, 5, 7])) 
    assert_equal(1, chop(3, [1, 3, 5, 7])) 
    assert_equal(2, chop(5, [1, 3, 5, 7])) 
    assert_equal(3, chop(7, [1, 3, 5, 7])) 
    assert_equal(-1, chop(0, [1, 3, 5, 7])) 
    assert_equal(-1, chop(2, [1, 3, 5, 7])) 
    assert_equal(-1, chop(4, [1, 3, 5, 7])) 
    assert_equal(-1, chop(6, [1, 3, 5, 7])) 
    assert_equal(-1, chop(8, [1, 3, 5, 7]))
end
```

相关文章

  • kata02:只有10%的程序员能写好的二分查找

    二分查找又称为折半查找, 基本思想是对一个有序的列表去检索. 首先将查找值与列表中间位置上的值比较, 如果相等, ...

  • 二分查找及其变种

    二分查找是非常基础的算法,日常应用和面试中都极常见。其思想简单,不再赘述,但想要写好二分查找,也并不是那么容易的。...

  • Java数据结构和算法(有序数组和二分查找)

    一、概述 有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。 二、有...

  • 数据结构和算法--二分查找

    二分查找 二分查找的思想 二分查找(Binary Search)算法,也叫折半查找算法。 二分查找针对的是一个有序...

  • JavaScript数据结构22—简单的查找算法

    以下算法包括了 顺序查找 插值查找 二分查找 斐波那契查找 输出 { index: 5, count: 10 }{...

  • 二分查找

    [TOC] 二分查找的基础模板 二分查找靠左的Index基础模板 二分查找靠右的Index基础模板 二分查找插入t...

  • 数据结构与算法——基础篇(六)

    常用10种算法 1、二分查找算法(非递归)——要求有序 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等...

  • 二分查找

    什么是二分查找?二分查找,也叫折半查找(Binary Search),它是一种效率较高的查找方法。二分查找的条件:...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 漫步数据结构与算法系列之 二分查找

    之前的章节介绍过,二分查找的时间复杂度是log(n)底数为2。 二分查找也叫折半查,能加快查找的速度,但是有个前提...

网友评论

      本文标题:kata02:只有10%的程序员能写好的二分查找

      本文链接:https://www.haomeiwen.com/subject/joxumttx.html