ソート:複数の値を、規則にしたがって並べ替えること。
ソートのやり方(アルゴリズム)は多くの種類がある。
例えば、\( n \)個の整数値または実数値があったときに、それを小さい順に並べ変えるアルゴリズムには
などがある。
バブルソートのアルゴリズムを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) # ソートが完了した配列を表示する。
上記のプログラムを入力し,実行してみる。実数値のソートに変更し,以下の実数値を並び替えてみる。
a = np.array([0.840188, 0.197551, 0.477397, 0.916195, 0.016301, 0.400944, 0.512932])
こののデータをファイルに保存する。このファイルからデータを読み込み,バブルソートを用いてデータを並び替え、以下のように画面(コンソール)に表示する。
-0.499998 -0.499974 -0.499972 -0.499953 -0.499942 ...