`
hedahai119
  • 浏览: 104675 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ruby版二分查找

阅读更多

def sortArr(arr)
  1.upto(arr.length-1) do |i|  
    (arr.length-i).times do |j|  
      if arr[j] > arr[j+1]  
        arr[j],arr[j+1] = arr[j+1],arr[j]  
      end  
    end  
  end  
  return arr  
end

def getIndex(arr,num,s=0,e=arr.size)
  
   if s > e
    return -1
  elsif s == e
    return arr[s] == num ? s : -1
  end
  
  cIndex = 0
  current = 0
  if (e +1 - s)  % 2 == 0
    cIndex = (s+e)/2
    current =  arr[cIndex]
  else
    cIndex = (s+e)/2+1
    current =  arr[cIndex]
  end
  
  if current == num
    return arr.index(current)
  else
    if current > num
      return getIndex(arr,num,s,(cIndex-1))
    else
      return getIndex(arr,num,(cIndex+1),e)
    end
  end
  
end 

number = 9
arr = [1,4,5,7,9,2,4,6,8,0,4,10]
index = getIndex(sortArr(arr),number)
puts "#{number} 在数组中的索引 => #{index}" 
 
分享到:
评论

相关推荐

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

    二分查找是一种在已经过排序的数组中搜索指定元素用的算法,这里我们就来看一下Ruby实现二分搜索(二分查找)算法的简单示例:

    leetcode答案-ruby_leetcode:ruby_leetcode

    Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...

    lrucacheleetcode-ruby-algorithms:ruby-算法

    lru缓存leetcode Ruby 算法 数据结构 堆 堆 双端队列 图形 算法 二分查找 快速排序 力码 lru缓存 在旋转排序数组中搜索 设计浏览器历史

    Ruby中的算法和数据结构:算法,数据结构和编程挑战的Ruby实现

    Ruby中的算法和数据结构精选在超和该存储库包含各种算法和数据结构的Ruby实现,以及和的许多挑战的解决方案内容: 基于二分搜索的问题阵列旋转算法阵列旋转的块交换算法子数组问题(Kadane算法)改组数组在数组中...

    ruby-projects:各种项目可以帮助我学习Ruby。 基于https

    大型项目列表(在Ruby中解决)号码查找第N位的PI-输入一个数字,并让程序生成PI直至小数位数。 限制程序运行的距离。 斐波那契数列-输入一个数字,并让程序为该数字或第N个数字生成斐波那契数列。 质因数分解-让用户...

    java简易版开心农场源码-JAG:Jenkins+Ansible+Gitlab持续交付学习记录

    开源免费,适合中小型公司将代码放置在该系统中,如果需要对GitLab进行二次开发,获取一些第三方的一些集成服务以及没有宕机时间的系统升级服务,可以随时购买他的服务许可证,原地无缝的从社区版升级为企业版 ...

    精通Qt4编程(第二版)源代码

    \蔡志明首次引入Qt设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了Qt应用程序中使用ui文件的基本方法以及Qt样式表;较深入地分析了Qt对象模型的一些基本知识,涉及信号和槽机制、Qt元对象系统、属性系统...

    AlgorithmClub:练习算法

    查找最大值和最小值 移位零 找到两个索引求和 找到边缘的最大周长 打印压缩数字 快速分类 合并排序 路口 计数排序 二进制搜索树 追加中 包含 横移 倒相 拆下 单链表 删除特定节点 细绳 漂亮的弦 字谜 计数发生 截断 ...

    精通qt4编程(源代码)

    \蔡志明首次引入Qt设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了Qt应用程序中使用ui文件的基本方法以及Qt样式表;较深入地分析了Qt对象模型的一些基本知识,涉及信号和槽机制、Qt元对象系统、属性系统...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java开源包8

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包11

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包2

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包3

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包6

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包5

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

Global site tag (gtag.js) - Google Analytics