线性搜索未成功完成

时间:2015-04-26 04:40:58

标签: ruby arrays loops linear-search

使用数组循环执行基本线性搜索,而不返回预期值。给出:

students = ["Alex", "Kyle", "Libby", "Monkey Boy"]

我正在尝试进行基本的线性搜索,看看名字“Monkey Boy”是否存在,并返回它的索引。

def linear_search(array, name)
  i = 0
  while i < array.length
    if array[i] == "#{name}"
      return i
    else
      return -1
    end
    i+=1
  end
end

linear_search(students, "Alex") # returns 0
linear_search(students, "Monkey Boy") # returns -1, should return 3

非常困惑。这是怎么回事?

2 个答案:

答案 0 :(得分:1)

return -1应该在while循环之外。

def linear_search(array, name)
  i = 0
  while i < array.length
    if array[i] == "#{name}"
      return i
    end
    i+=1
  end
  return -1 
end

答案 1 :(得分:1)

如果仔细查看,您的while块不正确

def linear_search(array, name)
 i = 0
 while i < array.length
  if array[i] == "#{name}"
   return i
  else
   return -1
  end
  i+=1
 end
end

搜索linear_search(students, "Alex")时 {[1}}出现在数组[0]上,而"Alex"array[i] == "#{name}"它返回i并打破循环

搜索true时 数组[3]中存在linear_search(students, "Monkey Boy"),第一次"Monkey Boy"array[i] == "#{name}",即false == "Alex"它返回-1,即执行其他部分和打破循环没有增量

如果你删除了其他部分,那么它将作为早期答案或以更优雅的方式工作

"Monkey Boy"