Ruby实现二分搜索(二分查找)算法的简单示例

 更新时间:2016年07月02日 17:19:05   作者:lucifercn  
二分查找是一种在已经过排序的数组中搜索指定元素用的算法,这里我们就来看一下Ruby实现二分搜索(二分查找)算法的简单示例:

在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

复杂度分析
时间复杂度:
折半搜索每次把搜索区域减少一半,时间复杂度为201672171630230.png (57×31)。(n代表集合中元素的个数)
空间复杂度:
201672171655530.png (39×25)虽以递归形式定义,但是尾递归,可改写为循环。

Ruby代码示例

def binseaech(arr, i)
  low, high = 0, arr.size - 1
  while (low < high)
    mid = (low + high)/2
    if arr[mid] < i
      low = mid + 1
    elsif arr[mid] > i
      high = mid - 1
    else
      return mid
    end
  end
end

arr = [1,3,12,34,35,46,91,108]
puts binseaech(arr, 91)

结果:

6
[Finished in 0.1s]

相关文章

  • 深入理解Ruby中的代码块block特性

    深入理解Ruby中的代码块block特性

    听到代码块这个翻译,你或许会联想到类或者结构体,但block并不是这些东西,这里就带着大家来深入理解Ruby中的代码块block特性
    2016-05-05
  • Ruby实现的图片滤镜算法代码

    Ruby实现的图片滤镜算法代码

    本文给大家分享的是使用ruby实现的几种图片滤镜的算法,包括灰度、二值、底片、浮雕。非常的简单实用,有需要的小伙伴可以参考下
    2017-01-01
  • 用实际代码演示Ruby的容易被误解的6个特性

    用实际代码演示Ruby的容易被误解的6个特性

    这篇文章主要介绍了用实际代码演示Ruby的容易被误解的6个特性,采集自IBM官方网站的开发者文档,需要的朋友可以参考下
    2015-04-04
  • 快速正确的安装 Ruby, Rails 运行环境

    快速正确的安装 Ruby, Rails 运行环境

    对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境
    2014-07-07
  • 在Mac OS X下安装Ruby运行环境的详细步骤

    在Mac OS X下安装Ruby运行环境的详细步骤

    这篇文章主要给大家介绍了在Mac OS X下安装Ruby运行环境的方法步骤,文中介绍的很详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-02-02
  • Ruby中类变量和实例变量的比较

    Ruby中类变量和实例变量的比较

    这篇文章主要介绍了Ruby中类变量和实例变量的比较,本文讲解了4点类变量和实例变量的不同之处,并给出了代码实例,需要的朋友可以参考下
    2015-05-05
  • Ruby中的钩子方法详解

    Ruby中的钩子方法详解

    这篇文章主要介绍了Ruby中的钩子方法详解,本文讲解了什么是钩子方法、included、Devise中的 included、extended、ActiveRecord中的 extended、prepended、inherited等内容,需要的朋友可以参考下
    2015-05-05
  • Rails实现字段加密存储

    Rails实现字段加密存储

    这篇文章主要介绍了Rails实现字段加密存储的方法以及具体的示例代码,非常实用,需要的朋友可以参考下
    2017-11-11
  • 详细解析Ruby中的变量

    详细解析Ruby中的变量

    这篇文章主要介绍了详细解析Ruby中的变量,是Ruby学习中最基础的知识之一,需要的朋友可以参考下
    2015-05-05
  • ruby 杂项

    ruby 杂项

    ruby 杂项...
    2007-11-11

最新评论