Python
 Computer >> コンピューター >  >> プログラミング >> Python

再帰を伴う二分探索を実装するPythonプログラム


再帰を使用して二分探索を実装する必要がある場合は、インデックス「high」がインデックス「low」より大きいかどうかをチェックするメソッドを定義できます。 'mid'変数に存在する値に基づいて、要素を検索するために関数が再度呼び出されます。

リストを使用して、異種の値(つまり、整数、浮動小数点、文字列などの任意のデータ型のデータ)を格納できます。

以下は同じのデモンストレーションです-

def binary_search(my_list, low, high, elem):
   if high >= low:
      mid = (high + low) // 2
      if my_list[mid] == elem:
         return mid
      elif my_list[mid] > elem:
         return binary_search(my_list, low, mid - 1, elem)
      else:
         return binary_search(my_list, mid + 1, high, elem)
   else:
      return -1
     
my_list = [ 1, 9, 11, 21, 34, 54, 67, 90 ]
elem_to_search = 1
print("The list is")
print(my_list)

my_result = binary_search(my_list,0,len(my_list)-1,elem_to_search)

if my_result != -1:
   print("Element found at index ", str(my_result))
else:
   print("Element not found!")

出力

The list is
[1, 9, 11, 21, 34, 54, 67, 90]
Element found at index 0

説明

  • 「binary_search」という名前の関数が定義されています。
  • リスト、「low」変数、「high」変数、および検索する要素をパラメーターとして受け取ります。
  • 次に、変数「mid」に「high」変数と「low」変数の平均が割り当てられます。
  • 「mid」の要素が検索する必要のある要素と同じである場合、それが返されます。
  • それ以外の場合、「mid」位置の要素が検索対象の要素よりも大きい場合は、異なるパラメーターのセットを渡すことで関数が再度呼び出されます。
  • それ以外の場合、「mid」位置の要素が検索対象の要素よりも小さい場合は、別のパラメータセットを渡すことで関数が再度呼び出されます。
  • これでリストが定義され、このリストをパラメーターとして渡すことで関数が呼び出されます。
  • この操作のデータは変数に格納されます。
  • この変数は、コンソールに表示される出力です。

  1. Pythonプログラムでの線形探索

    この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム 指定されたarr[]の左端の要素から開始し、要素xをarr []の各要素と1つずつ比較します。 xがいずれかの要素と一致する場合は、インデックス値を返します。 xがarr[]のどの要素とも一致しない場合は、-1を返すか、要素が見つかりません。 次に、特定のアプローチの視覚的表現を見てみましょう- 例 def linearsearch(arr, x):    for i in range(len(arr)):     &nbs

  2. 線形探索のためのPythonプログラム

    この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with any of elements in arr[] , return -1 or element no