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实现二分搜索(二分查找)算法的简单示例:
Programming),或是二分查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的对 树,数组、链表、字符串 和 hash 的操作。通过做这些题能让你对这些最基础的算法的思路...
lru缓存leetcode Ruby 算法 数据结构 堆 堆 双端队列 图形 算法 二分查找 快速排序 力码 lru缓存 在旋转排序数组中搜索 设计浏览器历史
Ruby中的算法和数据结构精选在超和该存储库包含各种算法和数据结构的Ruby实现,以及和的许多挑战的解决方案内容: 基于二分搜索的问题阵列旋转算法阵列旋转的块交换算法子数组问题(Kadane算法)改组数组在数组中...
大型项目列表(在Ruby中解决)号码查找第N位的PI-输入一个数字,并让程序生成PI直至小数位数。 限制程序运行的距离。 斐波那契数列-输入一个数字,并让程序为该数字或第N个数字生成斐波那契数列。 质因数分解-让用户...
开源免费,适合中小型公司将代码放置在该系统中,如果需要对GitLab进行二次开发,获取一些第三方的一些集成服务以及没有宕机时间的系统升级服务,可以随时购买他的服务许可证,原地无缝的从社区版升级为企业版 ...
\蔡志明首次引入Qt设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了Qt应用程序中使用ui文件的基本方法以及Qt样式表;较深入地分析了Qt对象模型的一些基本知识,涉及信号和槽机制、Qt元对象系统、属性系统...
查找最大值和最小值 移位零 找到两个索引求和 找到边缘的最大周长 打印压缩数字 快速分类 合并排序 路口 计数排序 二进制搜索树 追加中 包含 横移 倒相 拆下 单链表 删除特定节点 细绳 漂亮的弦 字谜 计数发生 截断 ...
\蔡志明首次引入Qt设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了Qt应用程序中使用ui文件的基本方法以及Qt样式表;较深入地分析了Qt对象模型的一些基本知识,涉及信号和槽机制、Qt元对象系统、属性系统...
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...