Pythonを学んでアルゴリズムのシリーズ(一)|直接挿入して並べ替えます

3003 ワード

  • 前言
  • 直接挿入ソート
  • アルゴリズム実装
  • C言語
  • Python


  • 前言
    最近HeadFirsrtのPythonをかじったばかりで、正直に言うと、この本は自己感覚があまり私に向いていません.この本は主に一つの例をめぐって一歩一歩展開されています.知識体系が足りないのではないでしょうか.プログラミングの基礎が弱いシロに適しているような気がしますが、見終わってからもPythonの文法を簡単に理解しましたね.ちょうど最近アルゴリズムを復習したいと思っています.そこで習ったばかりのPythonで手を練習しましょう.一挙両得です.毎日仕事が終わってから更新してほしいです.自己充電ですね.
    直接挿入ソート
    直接ソートは1組のデータa[0...n]であり、i(初期i=1)個からa[0...i-1]が秩序化されていると仮定し、a[i]は挿入するデータであり、a[0...i-1]を遍歴し、a[0...i-1]の中でa[i]よりも大きいものがあれば、a[i]よりも大きい数a[s]または頭に出会うまで、最後にa[i]を最後のa[s]の後に置く.
  • 時間複雑度:O(n^2)
  • 空間複雑度:O(1)
  • 安定性:安定
  • アルゴリズム実装
    C++言語
    void insertSort(int* a,int length){
        for(int i=1; i<length; i++){
            //a[i]      
            //  a[0]-a[i-1]     ,   a[i] < a[i-1]         a[i-1]  
            if(a[i] < a[i-1]){
                int t = a[i];
                int j;
                //   i-1   ,              ,         ,
                //     a[i]    , a[i]      ,    
                for(j=i-1; j>=0 && a[j]>t; j--){
                    a[j+1] = a[j];
                }
                a[j+1] = t;
            }
        }
        for(int i=0; i<length; i++){
            cout<

    Python
    def insertSort(a, length):
       for i in range(1, length):
         if a[i-1] > a[i]:
           t = a[i]
           j = i-1
           while a[j] > t and j >= 0:
             a[j+1] = a[j]
             j = j-1
           a[j+1] = t
    
    b = [8, 4, 6, 3, 9]
    insertSort(b, len(b))
    print(b)