首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一个线性搜索给我的输出与另一个不同?

为什么一个线性搜索给我的输出与另一个不同?
EN

Stack Overflow用户
提问于 2016-06-24 09:52:55
回答 1查看 21关注 0票数 0

我正在转换算法解锁一书中提供的伪代码。

第一个伪代码如下:

代码语言:javascript
复制
Procedure LINEAR-SEARCH (A; n; x)
Inputs:
   A: an array.
   n: the number of elements in A to search through.
   x: the value being searched for.
Output: Either an index i for which A[i] = x, or the special value NOT-FOUND, which could be any invalid index into the array, such as 0 or any negative integer.
1. Set answer to NOT-FOUND.
2. For each index i, going from 1 to n, in order:
   A. If A[i] = x, then set answer to the value of i. 
3. Return the value of answer as the output.

以下是在Javascript中解决此伪代码的一种版本:

版本1:输出:将I作为5返回

代码语言:javascript
复制
function linearSearch(data, searchQuery) {
  var answer = 'not found';
  for (var i = 0, len = data.length; i < len; i++) {
    if (data[i] === searchQuery) {
      answer = i;
    }
  }
  return answer;
}

var names = ["Jack", "Molly", "Tristan", "Jacob", "Jacob", "Jacob", "Steph"]
var result = linearSearch(names, "Jacob");
console.log(result);

这是另一个:

版本2:输出:将i作为3返回

代码语言:javascript
复制
var answer = 'not found';

function LinearSearch(A,n,searchQuery) {
  var answer = 'not found';
  for (var i = 0; i < A.length; i++) {
    if (A[i] === searchQuery) {
      return i;
    }
  }
  return answer;
}

var names = ["Jack", "Molly", "Tristan", "Jacob", "Jacob", "Jacob", "Steph"];
var result = LinearSearch(names, names.length, "Jacob");

为了实现两种不同的输出,我在代码中做了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-06-24 09:56:42

第一个函数不会在找到匹配项后立即退出循环,但第二个函数会。

在第一个示例中,当i345时,本地answer变量将设置为i。最后一个值是5,所以这就是返回的值。

代码语言:javascript
复制
for (var i = 0, len = data.length; i < len; i++) {
  if (data[i] === searchQuery) {
    answer = i; // update answer - LOOP CONTINUES
  }
}

在第二个示例中,一旦找到匹配,函数就会返回该索引:

代码语言:javascript
复制
  for (var i = 0; i < A.length; i++) {
    if (A[i] === searchQuery) {
      return i; // return index immediately and stop iterating
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38004503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档