アルゴリズム1時間複雑度


コンピューター科学とは何ですか.
  • まず明確な点は、コンピュータ科学はコンピュータの研究だけでなく、コンピュータは科学発展の過程で重大な役割を果たしたが、それはただのツールであり、魂のないツールである.いわゆるコンピュータ科学は実際に問題を解決し、問題を解決し、問題を解決する過程で発生した解決策の研究である.例えば、コンピュータ科学者の目標は、この問題を処理するためのアルゴリズムを開発し、最終的にこの問題の解、または最適解を得ることである.だからコンピュータ科学もアルゴリズムの研究と見なすことができる.したがって,アルゴリズムとは問題を処理して解く実現構想や考え方であることも感じられる.

  • どのようにイメージ化された理解アルゴリズムですか?
  • 常勝将軍は作戦の前に戦略の制定を行い、最短の時間切コスト消費を最小限に抑えて最終的な勝利を得ることを目的としている.コードを戦場とすれば、プログラマーはこの戦いの指揮官であり、どのようにしてあなたのプログラムを最短でリソースを最小限に抑えて最終的な実行結果を得ることができますか?アルゴリズムは私たちの戦略です!

  • 意味
  • データ構造とアルゴリズム思想の汎用性は異常に強く、いかなる言語でも使用され、それらは私たちの符号化生涯の中で私たちの最も長い利器(左腕右腕)に伴うだろう.一定の経験を持つプログラマーが最終的につづったのはアルゴリズムとデータ構造である.
  • データ構造とアルゴリズムの思想も私たちが符号化の思考を開拓し、経験することを助けることができ、プログラミングの世界にもっと溶け込むことができます.
  •        ?
    a+b+c = 1000 a2 + b2 = c**2 (a,b,c     ),  a,b,c     ?
    
      1:    for      
    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)
      2:     1       for  
    for a in range(0,1001):
        for b in range(0,1001):
            c = 1000-a-b
            if a+b+c == 1000 and a**2+b**2 == c**2:
                    print(a,b,c) 

    プログラムの優劣を判断する方法
  • コンピュータリソースと実行効率を消費する(直感的には見えない)
  • 計算アルゴリズムの実行にかかる時間(マシンと実行環境の影響を受けるため推奨されない)
  • 時間複雑度(推奨)
  • 時間の複雑さ.
  • 評価ルール:量子化アルゴリズムによって実行する操作/実行ステップの数
  • .
  • 最も重要な項目:時間複雑度式の中で最も意味のある項目
  • イベントの複雑さの表現形式には、大きなO記法が使用できます.
  • O(n)
  •   :            
    a=5
    b=6
    c=10
    for i in range(n):
       for j in range(n):
          x = i * i
          y = j * j
          z = i * j
    for k in range(n):
       w = a*k + 45
       v = b*b
    d = 33
    - - - - - - - - - - - - - 
    3+3n**2+2n+1
    n**2       

    一般的な時間の複雑さ:
  • O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

  • データ構造
  • 概念:データ(基本タイプのデータ(int,float,char))の組織方式をデータ構造と呼ぶ.データ構造が解決するのは、データのセットがどのように保存され、保存形式がどのようになっているかです.

  • 3つの組織形式はクエリーの時間的複雑さに基づいていますか?[{},{},{}]      [(),(),()]     ['a':{},'b':{}]
    異なる形式でデータを整理すると、クエリーベースでの時間的複雑さが異なります.従ってアルゴリズムは実際の問題を解決するために設計され,データ構造はアルゴリズムが問題を処理する必要がある担体であると考えられる.
     
    転載先:https://www.cnblogs.com/zhangchen-sx/p/10877640.html