ruby应聘题目

本文介绍了哈希表与数组的基本区别,包括访问方式、优缺点,并展示了如何使用递归实现阶乘计算及二分查找算法。此外,还涉及了数组的排序和二叉树的遍历方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:数组和哈希表的区别


哈希表是通过 元素关键码 的值 直接查找 元素存储位置的 数据结构数组是通过 下标 可以直接访问到 下标对应位置上元素的 数据结构哈希表: 元素的关键码 通过 散射函数 映射 得到的函数值 就是 哈希表数组的下标(一般的哈希表组织元素的方法还是数组)数组只能通过下标迅速访问,但是这个下标与数组里存的元素值没什么关系;哈希表 通过散射函数 建立了 数组元素关键码的值 与 下标的关系 ; 是数组的加强版;所以;哈希表可以 直接访问到 元素关键码 对应的 元素 上去;(相当于由 关键码 通过 散射函数的映射 直接找到了 这个元素 在 哈希表 中的 下标)。但是由于散射函数的作用,元素不能占满整个哈希表,哈希表不是每一个位置都有元素的;综上述:哈希表:优点:直接访问到关键码值对应的元素(数据);缺点占用空间很大;数组:优点:结构紧凑;缺点:不能直接访问到关键码值所对应的元素(数据);

二:写一个递归
好像没有专门的符号,要求阶乘,需要定义一个递归的方法,如N!
def fact(n)
if n == 0
1
else
n * fact(n-1)
end end

三:
用ruby实现二分法,在已知数组中查找特定的值。
Def search(a,b)
if(a.length==0) return -1;
Startpos=0
Endpost=a.length-1
M=(startPos+endPos)/2;
while(Startpos<=Endpost) do
If a[m]>b
endPos=m-1
Elsif a[m]<b
Startpos=m+1
Else
Return j
End
M=(startPos+endPos)/2;
End

A=[2,3,4,6,7,8,9,10,12] #已知数组
J=7 #特定值
p search(A,J)


方法2:
/*
功能: 实现数组的二分法查找(只算法只适合按从小到大排列的数组)
返回值:关键字在数组中的下标, 返回-1表示未找到
a[]: 要搜索的数组
len: 数组元素个数
key: 要查找的关键字
*/
intbinSearch(inta[],intlen,intkey)
{
inti = len / 2;
intii = 0;
if(len < 1)
return-1;
if((key > a[i]) && (len - i > 0))
{
ii = binSearch(a+i+1, len - i - 1, key);// 在后半段数组中查找
if(ii != -1)
returnii + i + 1;// 加上数组前半段的长度
else
return-1;
}
elseif(key < a[i] && i > 0)// 在前半段数组中查找
returnbinSearch(a, i, key);
elseif(key == a[i])
returni;// 返回关键字在数组中的下标
else
return-1;// 未在数组中找到关键字
}


冒泡排序

int temp; for(int i=0;i<9;i++) { for(int j=0;j<10-i-1;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } }


创建二叉树并能实现二叉树的先序、中序、后序遍历如果输入数据为:a b c  输出结果为:a b c   b a c   b c a


arr = File.open("ri.txt").readlines
lines = arr.size
puts "myfile has #{lines} lines in it."
longest = arr.collect {|x| x.length}.max
puts "The longest line in it has #{longest} characters."
读取某文件有几行,字数最多的一行有几个字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值