検索
ホームページバックエンド開発Python チュートリアルPython の逐次リスト アルゴリズムの複雑さに関する知識の紹介

この記事は、Python の逐次テーブル アルゴリズムの複雑さについての知識を提供します。これには一定の参考価値があります。必要な友人は参照できます。お役に立てば幸いです。

1. アルゴリズムの複雑さの紹介

アルゴリズムの時間と空間の特性について、最も重要なことはその 規模と傾向 であるため、アルゴリズムの複雑さを測定する関数は複雑さ 定数係数は無視できます。

Big O 表記法は、通常、特定のアルゴリズムの漸近時間計算量です。一般的に使用される漸近計算量関数の計算量は、次のように比較されます:

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

時間計算量の例を紹介します。2 つのコード例を比較して計算結果を確認してください。

import time 
start_time = time.time()
for a in range(0,1001):
    for b in range(0,1001):
        for c in range(0,1001):
            if a+b+c ==1000 and a**2 + b**2 == c**2:
                print("a, b, c :%d, %d, %d" % (a, b ,c))
end_time = time.time()
print("times:%d" % (end_time-start_time))
print("完成")

えええええ

時間計算量の計算方法:

import time
start_time = time.time()
for a in range(0,1001):
    for b in range(0,1001):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print("a, b, c :%d, %d, %d" % (a, b ,c))
end_time = time.time()
print("times:%d" % (end_time-start_time))
print("完成")

2. シーケンス リストの時間計算量

リストの時間計算量のテスト

# 时间复杂度计算
# 1.基本步骤,基本操作,复杂度是O(1)
# 2.顺序结构,按加法计算
# 3.循环,按照乘法
# 4.分支结构采用其中最大值
# 5.计算复杂度,只看最高次项,例如n^2+2的复杂度是O(n^2)

出力結果

リスト内のメソッドの複雑さ:

えええええ

辞書内のメソッドの複雑さ (補足)

# 测试
from timeit import Timer

def test1():
    list1 = []
    for i in range(10000):
        list1.append(i)
        
def test2():
    list2 = []
    for i in range(10000):
        # list2 += [i] # +=本身有优化,所以不完全等于list = list + [i]
        list2 = list2 + [i]
        
def test3():
    list3 = [i for i in range(10000)]
    
def test4():
    list4 = list(range(10000))
    
def test5():
    list5 = []
    for i in range(10000):
        list5.extend([i])
    
timer1 = Timer("test1()","from __main__ import test1")
print("append:",timer1.timeit(1000))

timer2 = Timer("test2()","from __main__ import test2")
print("+:",timer2.timeit(1000))

timer3 = Timer("test3()","from __main__ import test3")
print("[i for i in range]:",timer3.timeit(1000))

timer4 = Timer("test4()","from __main__ import test4")
print("list(range):",timer4.timeit(1000))

timer5 = Timer("test5()","from __main__ import test5")
print("extend:",timer5.timeit(1000))

3. シーケンス テーブルのデータ構造

  1. シーケンス テーブルの完全な情報には 2 つの部分が含まれます。1 つの部分はテーブル内の要素のセットであり、もう 1 つの部分はテーブル内の要素のセットです。記録する必要がある情報には、主に要素格納領域の容量と現在のテーブルの要素数が含まれます。

  2. ##ヘッダーとデータ領域の組み合わせ: ヘッダー情報(記録容量と存在要素数)と連続保存用データ領域の一体構造


  3. 別個の構造: ヘッダー情報とデータ領域は連続的に格納されず、一部の情報は実際のデータ領域を指すアドレス ユニットの格納に使用されます

  4. 2 つの違いと利点と欠点:

  5. # 列表方法中复杂度
    # index    O(1)
    # append    0(1)
    # pop    O(1) 无参数表示是从尾部向外取数
    # pop(i)    O(n) 从指定位置取,也就是考虑其最复杂的状况是从头开始取,n为列表的长度
    # del    O(n) 是一个个删除
    # iteration O(n)
    # contain O(n) 其实就是in,也就是说需要遍历一遍
    # get slice[x:y] O(K)   取切片,即K为Y-X
    # del slice O(n) 删除切片
    # set slice O(n) 设置切片
    # reverse O(n) 逆置
    # concatenate O(k) 将两个列表加到一起,K为第二个列表的长度
    # sort O(nlogn) 排序,和排序算法有关
    # multiply O(nk) K为列表的长度
    # 字典中的复杂度
    # copy O(n)
    # get item O(1)
    # set item O(1) 设置
    # delete item O(1)
    # contains(in) O(1) 字典不用遍历,所以可以一次找到
    # iteration O(n)
4. Python での変数空間拡張の戦略


1. 空のテーブル (または非常に小さなテーブル)、システムは 8 つの要素を収容できる記憶領域を割り当てます。

2 挿入操作 (挿入、追加) を実行する際、要素の記憶領域がいっぱいの場合は、要素の記憶領域を 4 つの記憶領域に置き換えます。記憶領域を 2 倍にする
3. テーブルがすでに非常に大きい (しきい値が 50000) 場合は、ポリシーを変更してサイズを 2 倍にする方法を採用します。空き領域が多すぎるのを避けるため。

以上がPython の逐次リスト アルゴリズムの複雑さに関する知識の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの精度を改善する方法は?Apr 02, 2025 am 07:09 AM

風光明媚なスポットコメント分析におけるJieba Wordセグメンテーションの問題を解決する方法は?風光明媚なスポットコメントと分析を行っているとき、私たちはしばしばJieba Wordセグメンテーションツールを使用してテキストを処理します...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター