Pythonの実装の検索アルゴリズム

ときに異なるデータ構造、検索データストレージの非常に基本的な必要条件。最も簡単な方法は、各要素のデータ構造をトラバースし、あなたが探している値でそれを一致させることです。これは、線形検索と呼ばれています。それはほとんど使用されませんが、それは我々がアイデア高度な検索アルゴリズムの一部を実装する方法を示し用のプログラムを作成するために、非効率的です。
リニア検索
検索のこのタイプでは、すべての値を一つずつ検索。各値は、一致するものが見つかった場合は、それ以外の検索は、データ構造の終わりまで続く、指定した値を返す、チェックされます。コードは以下の通りであります:

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
def linear_search(data, search_for):
     """线性搜索"""
     search_at = 0
     search_res = False
     while search_at < len (data) and search_res is False :
         if data[search_at] = = search_for:
             search_res = True
         else :
             search_at + = 1
     return search_res
 
 
lis = [ 5 , 10 , 7 , 35 , 12 , 26 , 41 ]
print (linear_search(lis, 12 ))
print (linear_search(lis, 6 ))



補間探索
探索アルゴリズムのは、プローブ位置の所望の値に適用されます。このアルゴリズムが機能するために、データ収集の形態にソートし、均一に分布されるべきです。最初に、プローブ位置は、コレクション内の最大項目の位置です。マッチが発生した場合、アイテムのインデックスが返されます。アイテムは、中間の項目、右サブアレイプロジェクトの途中でプローブの再計算された位置よりも大きい場合。そうでなければ、プログラムは、サブプロジェクトの配列の左側の真ん中に検索します。子がゼロに減少するまで、このプロセスは、サブアレイ、アレイサイズに継続します。コードは以下の通りであります:

[Pythonの]  プレーンテキストビューは、  コードをコピー
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
def insert_search(data,x):
     """插值搜索"""
     idx0 = 0
     idxn = ( len (data) - 1 )
     while idx0 < = idxn and x > = data[idx0] and x < = data[idxn]:
         mid = idx0 + int ((( float (idxn - idx0) / (data[idxn] - data[idx0])) * (x - data[idx0])))
         if data[mid] = = x:
             return "在下标为" + str (mid) + "的位置找到了" + str (x)
         if data[mid] < x:
             idx0 = mid + 1
     return "没有搜索到" + str (x)
 
 
lis = [ 2 , 6 , 11 , 19 , 27 , 31 , 45 , 121 ]
print (insert_search(lis, 31 ))
print (insert_search(lis, 3 ))

 

関係するその他の技術情報:gzitcast

おすすめ

転載: www.cnblogs.com/heimaguangzhou/p/11584308.html