データの並べ替え(データのソート)

ソート:複数の値を、規則にしたがって並べ替えること。

ソートのやり方(アルゴリズム)は多くの種類がある。

例えば、\( n \)個の整数値または実数値があったときに、それを小さい順に並べ変えるアルゴリズムには

などがある。

バブルソート

バブルソートのアルゴリズム
bubbleSortAlgorithmPython.png

バブルソートのアルゴリズムをPythonで書くと次のようになる。

import numpy as np
a = np.array([3, 2, 5, 4, 1]) # 未ソートの配列(リスト)

# 【重要】配列の型,配列の数が変わったとしても,次の行から「ここまで」の行のソートの部分を変更する必要はない。
nsort = len(a) # nsortは未ソートの配列の個数で,初期化している。初期値はすべての配列が未ソート。len(a)はaの配列数を返す関数。

while nsort > 1: # 未ソートの配列の個数が1より大きい場合は以下の操作を繰り返す。
    for i in range(nsort-1): # a[i]とa[i+1]を比較するので,iの最大値はnsort-2となる。range(nsort-1)は0,1,...,nsort-2のリストを返す関数。
        if a[i] > a[i+1]:  # a[i]がa[i+1]より大きかったら
            atmp = a[i+1]  #
            a[i+1] = a[i]  # a[i]とa[i+1]を入れ替えている。
            a[i] = atmp    # Pythonでは、この3行を a[i],a[i+1] = a[i+1],a[i] と書くことができる。
    nsort = nsort - 1 # 最大値が決まったので,未ソートの配列の数を一つ減らして,最大値を見つけることを繰り返す。
    print(nsort, a) # 現在の配列を表示

print(a) # ソートが完了した配列を表示する。

練習問題1

上記のプログラムを入力し,実行してみる。実数値のソートに変更し,以下の実数値を並び替えてみる。

	a = np.array([0.840188, 0.197551, 0.477397, 0.916195, 0.016301, 0.400944, 0.512932])

練習問題2

こののデータをファイルに保存する。このファイルからデータを読み込み,バブルソートを用いてデータを並び替え、以下のように画面(コンソール)に表示する。

-0.499998
-0.499974
-0.499972
-0.499953
-0.499942
...

添付ファイル: filebubbleSortAlgorithmPython.png 216件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-10-30 (月) 17:10:19