目次

ソートシミュレーション(Python)

 数列を、昇順あるいは降順に並べ替える、ソートは
 アルゴリズム事典に掲載されています。

 センサーで時系列に取得した情報を、ソートし
 どの時点のデータかを参照できるようにします。

 スクリプト言語Pythonで、センサーの情報をランダムに
 生成し、降順に並べるスクリプトは、以下。

import random

# generate value
xr = []
for e in range(0,7) :
 xx = int(random.uniform(10, 30))
 xr.append([xx,e+1])
print(xr)

# sort
for e in range(0,7) :
  for f in range(0,7) :
    ee = xr[e]
    ff = xr[f]
    caree = ee[0]
    carff = ff[0]
    if carff < caree :
      xr[e] = ff
      xr[f] = ee
print(xr)

 乱数で生成した情報は、以下。

[[24, 1], [29, 2], [17, 3], [29, 4], [25, 5], [27, 6], [20, 7]]

 リスト中の各要素は、センサー値、取得順序番号で
 1組にしてリストでまとめてます。

 連想配列を使えるプログラミング言語なら、連番と
 数値の組み合わせにもできますが、ソートが主体
 なので、リストのままとします。

 数値と取得順序をリストでまとめたので、2重ループで
 ソートするため、アルゴリズムは以下。

 隣接する2組の要素を、含まれる数値と数値で比較。
 大小関係があれば、組ごと交換する。

 スクリプトを実行すると、次のようにソートができます。

[[24, 1], [29, 2], [17, 3], [29, 4], [25, 5], [27, 6], [20, 7]]
             ↓
[[29, 2], [29, 4], [27, 6], [25, 5], [24, 1], [20, 7], [17, 3]]

 問題なくソートされています。

 降順、昇順の使い分けは、不等号の向きを変えるだけで
 済ませられるので、spreadsheetよりも簡単に変更可能と
 なっています。


目次

inserted by FC2 system