>  기사  >  백엔드 개발  >  배열의 요소를 검색하는 Python 프로그램

배열의 요소를 검색하는 Python 프로그램

王林
王林앞으로
2023-09-17 19:45:031149검색

배열의 요소를 검색하는 Python 프로그램

파이썬에서는 주로 주로 두 가지 검색 알고리즘을 사용합니다. 그 중 첫 번째는 선형 검색이고 두 번째는 이진 검색입니다.

이 두 가지 기술은 주로 주어진 배열이나 주어진 목록에서 요소를 검색하는 데 사용됩니다. 요소를 검색하는 동안 모든 종류의 알고리즘에서 따를 수 있는 두 가지 방법론이 있습니다. 그 중 하나는 재귀적 접근 방식이고 다른 하나는 반복적 접근 방식입니다. 두 가지 접근 방식 모두에서 두 가지 알고리즘을 논의하고 유사한 문제를 해결해 보겠습니다.

선형 검색

선형 검색 기술은 순차 검색이라고도 합니다. “순차 검색”이라는 이름의 의미는 이 검색 알고리즘이 따르는 프로세스에 의해 확실히 정당화됩니다. Python에서 배열이나 목록 내의 요소를 찾기 위해 사용되는 방법 또는 기술입니다.

ㅋㅋㅋ经常使用线性搜索的主要原因。

算법

  • 1단계 − 원하는 요소와 주어진 배열에 있는 각 요소를 비교하여 순차적인 순서로 요소를 검색합니다.

  • 步骤 2 − 如果找到所需的元素,则会将元素的索引或位置显示给用户。

  • 3단계 − 배열 내에 요소가 없으면 사용자에게 해당 요소를 찾을 수 없다는 알림이 표시됩니다. 이런 식으로 알고리즘이 처리됩니다.

일반적으로 선형 검색 알고리즘은 각 요소를 확인하고 비교하기 때문에 작은 배열이나 크기가 100 이하인 작은 목록에 비교적 적합하고 효율적입니다.

  • 如果所需元素位于数组的最后位置,将会消耗更多时间。

  • 线性搜索算法에서 最佳情况下的时间复杂島为“O(1)”。 0”。

  • 평균적인 경우 선형 검색 알고리즘의 시간 복잡도는 “O(n)”입니다. 이 경우 요소는 배열의 중간 위치에 존재합니다. 즉, 인덱스 " (n – 1 ) / 2 " 또는 " (( n – 1 ) / 2 )+ 1 "을 사용합니다.

  • 최악의 경우 선형 검색 알고리즘의 시간 복잡도는 “O(n)”입니다. 이 경우 요소는 배열의 마지막 위치, 즉 인덱스 “n-1”에 표시됩니다.

아래면의 示例中에서, 우리는 们将school习使用线性搜索에서 数组中查找元素的过程。

으아아아

출력

上述程序的输如下:

으아아아

예(재귀)

아래면의 例子中에서, 우리는 们将school习使用递归方法에서 数组中进行线性搜索的过程。

으아아아

출력

上述程序的输如下:

으아아아

이진 검색

이분법은 동일하지 않습니다. ㅋㅋㅋ考虑,它首先被排序,然后算法被应用于数组。

算법

    步骤 1
  • − 对数组进行排序是第一步。

  • 2단계
  • − 배열이 정렬된 후 배열은 두 부분으로 간주됩니다. 절반은 정렬된 배열의 첫 번째 요소부터 중간 요소까지이고, 두 번째 절반은 정렬된 배열의 중간 요소 다음 요소부터 마지막 ​​요소까지입니다.

  • 3단계
  • − 키 요소(검색 대상 요소를 키 요소라고 함)를 정렬된 배열의 중간 요소와 비교합니다.

  • 4단계
  • − 키 요소가 정렬된 배열의 중간 요소보다 작거나 같을 경우, 키 요소가 중간 요소보다 작으므로 후반부 요소는 더 이상 무시됩니다. 따라서 해당 요소는 첫 번째 요소와 중간 요소 사이에 반드시 존재해야 합니다.

  • 6단계
  • − 키 요소가 중간 요소보다 큰 경우 정렬된 배열의 전반부는 무시되고 중간 요소부터 마지막 ​​요소까지의 요소가 고려됩니다.

  • 7단계
  • − 해당 요소 중 핵심 요소를 다시 절반 배열의 중간 요소와 비교하고 동일한 절차를 반복합니다. 핵심 요소가 절반 배열의 중간 요소보다 크면 첫 번째 절반은 무시됩니다.

  • 第8步 - 如果关键元素小于或等于被分割数组的中间元素,则被分割数组的后半部分将被忽略。通过这种方式,元素将在数组的任意一半中进行搜索。

因此,与线性搜索相比,复杂度减少了一半或更多,因为有一半的元素将在第一步中被移除或不被考虑。二分搜索的最佳情况时间复杂度为“O(1)”。二分搜索的最坏情况时间复杂度为“O(logn)”。这就是二分搜索算法的工作原理。让我们考虑一个例子,并应用二分搜索算法来找出数组中的关键元素。

Example

In this example, we are going to learn about the process of searching an element in an array using Binary search in recursive approach.

def recursive_binary(arr, first, last, key_element):
   if first <= last:
      mid = (first + last) // 2 
   if arr[mid] == key_element:
      return mid
   elif arr[mid] > key_element:
      return recursive_binary(arr, first, mid - 1, key_element)
   elif arr[mid] < key_element:  
      return recursive_binary(arr, mid + 1, last, key_element)  
   else:  
      return -1 

arr = [20, 40, 60, 80, 100] 
key = 80 
max_size = len(arr)
result = recursive_binary(arr, 0, max_size - 1, key)  
if result != -1:  
   print("The element", key, "is present at index", (result), "in the position", (result + 1)) 
else:  
   print("The element is not present in the array") 

Output

上述程序的输出如下:

The element 80  is found at the index 3 and in the position 4

Example

In this example, we are going to learn about the process of searching an element in an array using Binary search in iterative approach.

def iterative_binary(arr, last, key_element):
   first = 0
   mid = 0
   while first <= last: 

      mid = (first + last) // 2 
      if arr[mid] < key_element:
         first = mid + 1 

      elif arr[mid] > key_element: 
         last = mid - 1 

      else: 
         return mid 

   return -1 

arr = [20, 40, 60, 80, 100] 
key = 80 
max_size = len(arr)

result = iterative_binary(arr, max_size - 1, key)  

if result != -1:  
   print("The element", key, "is present at index", (result), "in the position", (result + 1)) 
else:  
   print("The element is not present in the array")

Output

上述程序的输出如下:

The element 80  is found at the index 3 and in the position 4

这是二分搜索算法的工作原理。根据时间复杂度的概念,我们可以肯定二分搜索算法比线性搜索算法更高效,时间复杂度在其中起着重要的作用。通过使用这种类型的算法,可以搜索数组中的元素。尽管用于解决问题的过程不同,但结果不会波动。这是使用多种算法检查输出一致性的一个优点。

위 내용은 배열의 요소를 검색하는 Python 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제