什么是搜索

python的线性搜索算法及示例_python

搜索是我们日常生活中最常用的操作。例如在联系人列表中搜索电话号码,在学生信息中搜索学生卷号等等。搜索在衡量任何应用程序或网站的性能方面也发挥着重要作用。但现在的问题是,搜索的意义是什么?

  • 搜索是一种有助于查找给定元素或值在列表中的位置的技术。
  • 如果我们找到我们正在搜索的元素,那么我们会说搜索成功,但我们没有找到该元素,那么我们会说搜索不成功。

搜索类型

搜索主要有两种类型——

线性搜索(Linear Search)

  • 这是最简单的搜索技术。
  • 它按顺序检查列表中每个元素的目标搜索值,直到找到匹配项或搜索完所有元素。
  • 这种搜索技术可以对两种类型的列表执行,列表是已排序的还是未排序的。

二元搜索(二分搜索,Binary Search)

  • 这是最快的搜索技术。
  • 它基于分而治之的方法。
  • 但是在这种技术中,列表的元素必须按排序顺序排列。
  • 二进制搜索首先将列表的中间元素与搜索值进行比较。
  • 如果搜索值与中间元素匹配,则返回其在列表中的位置。
  • 如果搜索值小于中间元素,则搜索在列表的下半部分继续。
  • 如果搜索值大于中间元素,则搜索将在列表的上半部分继续。通过这样做,该算法消除了搜索值不能位于每次迭代中的一半。

线性搜索 – 按顺序搜索元素

概述

  • 它也称为顺序搜索。
  • 在这种搜索技术中,我们从列表的开头开始,通过检查每个后续元素来搜索搜索元素,直到找到搜索元素或列表用尽。
  • 这是最简单的搜索技术之一。
  • 此技术可应用于已排序和未排序列表。
  • 时间复杂度 : θ ( n )
  • 空间复杂度 : O(1)

线性搜索示例

让我们举一个应用线性搜索的例子——

  • 如果您被要求找到拥有电话号码的人的姓名。
  • 由于电话簿是按名称而不是数字排序的,因此我们必须访问目录的每个号码。

线性搜索优势

  • 这是最简单和传统的搜索技术。
  • 线性搜索可以应用于已排序或未排序的数据列表。
  • 它很容易实现。

线性搜索缺点

  • 如果列表包含大量数据,可能无法完成。
  • 搜索数据需要更多时间。
  • 如果列表中有 200 个元素,并且您想在位置 199 处搜索元素,那么您必须搜索整个列表,这会消耗时间。

线性搜索算法

现在我们将看到它的算法。它的算法非常简单,如下所示。

Linear Search ( List A, Item x)
 
Step 1: Set i to 1
Step 2: if i > n then go to step 7
Step 3: if A[i] = x then go to step 6
Step 4: Set i to i + 1
Step 5: Go to Step 2
Step 6: Print Element x Found at index i and go to step 8
Step 7: Print element not found
Step 8: Exit

线性搜索如何工作?

现在我们通过一个例子来理解线性搜索的机制。

  • 在此示例中,我们采用一个包含 7 个元素的未排序列表。
  • 现在我们必须找到作为目标元素的元素 15。
  • 现在我们将看到搜索是如何发生的。
  • 首先,在第一次比较中,我们将目标元素与首先存在的元素进行比较。如果两者都匹配,那么我们将返回找到的元素,但在此示例中,元素没有在第一位找到,因此我们将进行第二次比较。
  • 在第二次比较中,我们将重复与之前相同的过程。
  • 我们将重复此过程,直到找到目标元素。
  • 在这个例子中,我们在第5次比较中找到目标元素。现在我们将停止搜索过程并返回目标元素。
  • 上述过程在这张图中描述得非常清楚。

python的线性搜索算法及示例_线性搜索算法_02

线性搜索实现

现在我们将学习如何在 python 中实现线性搜索。

def linear_search(myList,item):
    for i in range(len(myList)):
        if myList[i]==item:
            return i
    return -1
 
myList = [1,7,6,5,8]
print("Element in List :", myList)
x = int(input("enter searching element :"))
 
result = linear_search(myList,x)
if result==-1:
     print("Element not found in the list")
else:
     print( "Element " + str(x) + " is found at position %d" %(result))

代码说明

  • 首先,我们必须定义一个函数。我们给它起个名字linear_search()。 它需要两个参数,第一个是我们的列表,另一个是要搜索的项目。
  • 然后开始一个for循环,在这个循环中,我们将搜索元素与当前位置的元素进行比较。如果两个元素都匹配,那么我们返回搜索元素的当前位置。如果在列表中找不到该元素,那么我们将返回 -1,表示找不到元素。
  • 现在我们将定义我们的列表,在这个列表中,我只取了 5 个元素。
  • 然后打印屏幕中的元素列表。
  • 从用户那里获取他们想要搜索的内容。
  • 最后调用我们已经定义的方法 linear_search()。
  • 我们将检查是否在列表中找到搜索元素。
  • 如果结果 == -1,那么我们将输出“列表中不存在”,否则我们将打印搜索结果的当前位置。