用Python编写线性搜索程序

线性搜索是一种从数组中搜索某些特定值的搜索技术。这是最简单的搜索技术。

在这种搜索技术中,

  • 将要搜索的值与数组中的所有元素进行比较。

  • 如果找到该值,则返回该元素的索引。

  • 如果特定元素不存在于整个数组中,则返回-1或一些相关的字符串消息。

伪码

linearSearch(int array[], int value):

   for i=0 to len(array):

      if(array[i]==value):

         Element is Present

   //外循环

   Element Not Present // element not found in the whole array

例子

def linearSearch(arr,value):

   for i in range(len(arr)):

      if(arr[i]==value):

         return i

   return -1

array=[1,2,3,4,5,6,7,8,9,10]

value=5

a=linearSearch(array,value)

if(a==-1):

   print("Element not present")

else:

   print("Element present at index",a)

输出

Element present at index 4

时间复杂度

线性搜索的最坏情况时间复杂度为O(n)。当元素出现在数组的最后一个索引处或根本不存在时,会发生最坏的情况。

线性搜索的最佳情况下时间复杂度为O(1)。最好的情况是元素出现在数组的第一个索引处。

改进的线性搜索

线性搜索的最坏情况复杂度可以提高到O(n / 2)。可以使用左右两个指针同时进行两次比较来完成此操作,从而将线性搜索的最坏情况下的时间复杂度降低到O(n / 2)。

例子

def linearSearch(arr,value):

   left=0

   right=len(arr)-1

   while(left<=right):

      if(arr[left]==value):

         return left

      elif(arr[right]==value):

         return right

      left+=1

      right-=1

   return -1

array=[1,2,3,4,5,6,7,8,9,10]

value=10

a=linearSearch(array,value)

if(a==-1):

   print("Element not present")

else:

   print("Element present at index",a)

输出

Element present at index 9

在上面的示例中,出现在最后一个索引处的元素是在第一次迭代本身中找到的。使用第一种方法,将需要10次迭代才能找到此元素。

如果未找到该元素,则最坏情况的复杂度为O(n / 2),因为第二种方法的迭代总数为n / 2。

线性搜索有多有用?

线性搜索很少使用,因为有更好的搜索算法(例如二进制搜索)可以提供更好的时间复杂度。对于大型输入数组,线性搜索效率不高。

以上是 用Python编写线性搜索程序 的全部内容, 来源链接: utcz.com/z/342593.html

回到顶部