アルゴリズムの基本_二分探索

私は何もすることがありません、私はPythonに興味があります、私はこのアルゴリズム図を購入しました、私はそれが小説を読むようなものであることを願っています、hehe

目標:
(1)マスターバイナリ検索
(2)マスターデータ構造(配列、リンクリスト)
(3)マスター再帰
(4)マスター問題解決スキル
(5)マスターデータ構造(ハッシュテーブル)
(6)マスターグラフアルゴリズム
(7 )K個の最近傍アルゴリズムを習得する
(8)他のいくつかのアルゴリズムを理解する

アルゴリズムとは何ですか?
これはタスクを完了するための一連の命令であり、任意のコードフラグメントをアルゴリズムと見なすことができます。

なぜアルゴリズムを見るのですか?
一般的なアルゴリズム手法を使用して、コードの実行速度を向上させます。

二分探索とは何ですか?要素
順序付きリストで、必要な要素をすばやく見つけます。x回しかかからず、2のx乗= N(nは入力要素の数です)。
たとえば、40億の順序付けられた要素では、入力したコンテンツを見つけるのに36回しかかかりません。これは本当に素晴らしいです

def binary_search(list, item):
    low = 0
    high = len(list)-1

    while low <= high:
        mid = int((low + high)/2)
        guess = list[mid]
        if guess == item:
            return mid
        if guess >item:
            high = mid - 1
        else:
            low = mid + 1
    return None


if __name__ == "__main__":
    my_list = [1, 3, 5, 6, 7, 8, 9]

    # 代表的是列表中的第几个元素
    a = binary_search(my_list, 9)
    # 输出是None,则说明没有这个元素
    b = binary_search(my_list, -1)
    print(a)
    print(b)
		
	

アルゴリズムの実行時間は秒単位では測定されません。成長率で測定されます。実行時間はBigO表記で表されます。バイナリ検索は、単純検索よりもはるかに高速です。
ビッグ0表記:アルゴリズムの実行時間。
O(log n):二分探索を含む対数時間。
O(n):単純な検索を含む線形時間
O(n * log n):高速ソート、高速ソートアルゴリズム
O(n 2乗):選択的ソート、低速ソートアルゴリズム
O(n!):非常に低速アルゴリズム、n個異なる都市、最短の旅を確実にする方法は?確かに、すべての順列と組み合わせをリストする必要があり、順列と組み合わせの数はnの階乗です。

おすすめ

転載: blog.csdn.net/weixin_45451320/article/details/114108530