質問: 0 while(n<13): msd[n]>msd[n+1] #あるmsdの値がそれ以降の値でそれ未満になるような変数設定 n+=1 break 上記コードの4行目のmsdの条件(あるmsdの値がそれ以降のmsdの値でその値未満になる)を満たすような変数の設定方法を教えてください。 それかwhile文を使わなくても効果的な実装コードがある場合は教えてください。よろしくお願いします
回答: 各項目ごとに最小値がリセットされるとしたら、次のような形式でしょうか。 ``` n = 12 # 配列の件数 minimum = -999 miniindex = 0 # 最小値のある配列の添字 初期値は0番目 i = 0 # すべての配列データ捜査のための添字 # 全ての配列データ捜査 while i < n: minumum = msd[i] # 最小値 毎回初期化する j = i + 1 # i番の後にi番のデータよりも小さなデータがあるかを探査するための添字 while msd[j] >= minimum or j < n: j += 1 if j < n: # jがn未満ならi番のデータより小さい値を見つけたことで、 # nならば見つからなかったことになる。 kyori = j - i # j番がi番より何個分後にあるかを求める変数 # i番の後の間近にi番のデータより小さいデータが見つかったときにその情報を表示する。 print i+"番のデータ"+msd[i]+"の"+kyori+"番後にもっと小さい"+msd[j]+"があります。" else: # 配列データ中にi番のデータ未満の値がなかったとき、 # i番自身のデータを表示する。 print i+"番のデータが最小であり、"+msd[i]+"です。" i += 1 ``` またデータ番号と昇順の順位の項目も用意して、自分より順位の小さいデータが自分以降の間近にあるかを調べ、もしあれば自分のデータ番号とそのデータの番号との差を出力するアルゴリズムも考えられます。