[音乐播放] DOUG LLOYD:线性 搜索是一种算法,我们 可用来查找在数组中的元素。 算法召回 是一步一步的设置 的用于完成任务的指令。 线性搜索 算法的工作方式如下。 跨越阵列迭代从左 没错,找指定的元素。 在伪代码中,这是一个更 蒸馏版本的这句话, 如果第一元件是什么 你要寻找的,可以停止。 否则,移动到下一个元件和 继续下去,一遍又一遍,直到找到 元素,或者你没有。 因此,我们可以用线性 搜索算法,例如, 找到目标值 九里这阵。 好了,我们从头开始。 如果这就是我们 寻找,我们可以停止。 这不是,我们不是在寻找11。 所以否则,移动到下一个元素。 所以,我们就来看看23。 23,我们在寻找什么? 哦,不,所以我们就移动到下一个 元件,并且下一个元素, 我们继续经历 这个过程中一遍又一遍 以上,直到我们的土地 在这样的情况下。 九是我们要找的, 和该阵列的这些元素 是,它的值是9。 因此,我们找到了我们 寻找,我们可以停下来。 线性搜索有 完成后,成功。 但有关,如果我们要寻找什么 一个元素,这不是在我们的数组。 是否线性搜索仍然有效? 那么肯定。 因此,我们重复这个过程 起始于第一元件。 如果这就是我们 寻找,我们可以停止。 它不是。 否则,我们进入下一个元素。 但是我们可以不断的重复这个过程, 检查反过来每个元素, 希望我们找到了50号。 但我们不会知道 我们已经找到了50号 或者,如果我们没有,直到我们已经加强 在阵列上的每一个元素。 只有当我们已经做了 这并拿出短, 我们可以得出结论: 50不数组中。 这样一来,线性搜索 算法,那么它失败了,本身。 但不是在某种意义上说,它 是不成功的在做什么 我们要求它做的事情。 这是不成功的作为 就像它没有找到50, 但50并没有到数组中。 但是,我们已经彻底搜查 通过每一个元素 所以,虽然我们没有发现 任何事情,线性搜索仍 成功,即使 元素不是阵列中。 那么什么是最坏的情况下 方案与线性搜索? 那么我们来看看通过 每一个元件, 要么是因为目标元素 是阵列的最后一个元素, 或者我们正在寻找的元素不 实际存在阵列中的。 什么是最好的情况? 嗯,我们可能会发现 元素立刻。 有多少元素和 我们接着来看看 在最好的情况下, 如果我们寻找它 我们发现它在开始的时候? 我们可以立即停止。 这是什么说的 线性搜索的复杂性? 井在最坏的情况下,我们有 看看每一个元素。 而且使其在邻 N,在最坏的情况下。 在最好的情况下,我们要 马上找到的元素。 等运行在1欧米加。 我是道格·劳埃德。 这是CS50。