Ruby代码qn。如何减少迭代次数
我是ruby新手,我想知道为什么会出现这个错误。(很抱歉格式错误) 错误:Ruby代码qn。如何减少迭代次数,ruby,iteration,Ruby,Iteration,我是ruby新手,我想知道为什么会出现这个错误。(很抱歉格式错误) 错误: rb37: in '%': nil can't be coerced into Fixnum (TypeError) 我的问题也需要帮助。我想提出一种方法,用最有效的方法(在不到5分钟的时间内)遍历包含100万个ID号的列表,找到一个特定的ID。我整个下午都在做这个:( def存在?(id) 转储=[] employee_list=$employee_list.sort#employee_list是一个包含100万行数
rb37: in '%': nil can't be coerced into Fixnum (TypeError)
我的问题也需要帮助。我想提出一种方法,用最有效的方法(在不到5分钟的时间内)遍历包含100万个ID号的列表,找到一个特定的ID。我整个下午都在做这个:(
def存在?(id)
转储=[]
employee_list=$employee_list.sort#employee_list是一个包含100万行数据的数组,我必须查找一个特定的“id”
而dump.length dump老实说,我完全不知道你的代码试图做什么,但问题是:你循环直到你的dump
数组的长度大于你正在搜索的id
。在循环中,你将员工列表的第一个元素添加到dump
的末尾。你还删除了一些内容从员工列表中
现在,取决于id
的大小,您将经常循环。例如,想象id
是,比如说,1234567890
,您将循环超过10亿次,并且将超过10亿个元素添加到dump
数组中。同时,您还不断地从员工中删除内容ist
。很可能在某个时间点,employee\u list
将变为空,这意味着employee\u list。首先
将变为nil
,您将附加nil
作为dump
的最后一个元素,因此您将尝试在第行中取id
和nil
的模数9、10、12或13
就像我说的,我根本不明白你在做什么,所以我不能告诉你如何解决这个问题
下面是我解决问题的方法:
def exist?(id)
$employee_list.find(id)
end
你真的想拥有一个存储在内存中有一百万个项目的数组吗?并像这样排序?这是一个学校的问题练习,要求我提供一个比仅仅使用for循环来检查1乘1更好的算法,这将花费很多小时。在这种情况下,既然你有一个排序数组,为什么不实现一个二进制搜索,它比在平均情况下,一对一的比较:循环100万个项目需要很多小时!?
def exist?(id)
$employee_list.find(id)
end