並べ替え

以下のpythonソースコードを

  • テキストエディタを使って
  • 拡張子 .py をつけて
  • 文字符号化UTF-8で
  • 保存する。

    [注意]

    1. 記号 # 以下の文字列は行末までpython処理系においては『無視され』、結果「comment]として扱われる。
    2. スクリプト内の文字列において日本語を正確に表示するた、えには、ファイル行頭で「#encoding: utf8」の記述が必要である(utf8は文字コード)。

    ファイル名 sort.py のpythonスクリプトをMacOSで動作させるためには

    $ python sort0.py
    

    とする(プロンプト $ はユーザ環境に併せて理解する)。

    並べ替えスクリプト(sort0.py)

    #encoding: utf8
    import random # 乱数モジュールを使う
    # random.random()        0.0~1.0までのfloat値
    # random.uniform(a,b)    a~bまでのfloat値
    # random.randint(a,b)    a~bまでのint値
    # バブルソート
    
    a = []# リスト a を用意する
    
    for i in range(0, 1000):
        rnd = random.randint(0,10000)
    #    print rnd
        a.append(rnd)# 乱数をリスト要素として追加する
    
    #大きな添字(len(a)-1)から比較して上の方が大きいときは互いに入れ替え
    for i in xrange(len(a)):
        for j in xrange(len(a)-1, i, -1):
           if a[j] < a[j-1]:
              tmp = a[j]
              a[j] = a[j-1]
              a[j-1] = tmp
    
    print a
    

    並べ替えスクリプト(sort1.py)

    #encoding: utf8
    # バブルソート 2
    import random # 乱数モジュールを使う
    import time
    # random.random()        0.0~1.0までのfloat値
    # random.uniform(a,b)    a~bまでのfloat値
    # random.randint(a,b)    a~bまでのint値
    
    def bubble_sort(a_list):
        for pass_number in range(len(a_list) - 1, 0, -1):
    #        print "pass = ", pass_number
    #小さな添字(0と1)から比較して上の方が大きいときは入れ替え
            for i in range(pass_number):
    #            print(a_list)
                if a_list[i] > a_list[i + 1]:
                    temp = a_list[i]
                    a_list[i] = a_list[i + 1]
                    a_list[i + 1] = temp
    
    
    n = input("整列するデータ数 = ")
    a = []
    for i in range(int(n)):
        rnd = random.randint(0,1000)
    #    print rnd
        a.append(rnd)# 乱数をリスト要素として追加する
    
    #a = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    start = time.time()  #開始時間
    bubble_sort(a)
    end = time.time()    #終了時間
    
    #print "sorted list"
    #print(a)
    print("Bubble sort of %d elements required %10.7f seconds" %(int(n), end-start))