新しく発言する EXIT インデックスへ
並べ替え

  並べ替え 大久保 2004/09/23 20:38:00 
  こんな感じでしょうか? 山中和義 2004/09/24 15:25:07 

  並べ替え 大久保 2004/09/23 20:38:00  ツリーへ

並べ替え 返事を書く
大久保 2004/09/23 20:38:00
数字の並び替えができなくて困っています。
dim a(10)
for i=1 to 10
let a(i)=rnd
next i
で、a(n) (nは自然数)を小さい順に並べるとき、
a(n)の値を小さい順に表示させることはできるのですが、
nを小さい順に表示させることができません。
どなたかその表示のさせ方と、 
k番目に小さいnを b(k)に代入する方法を教えてください。

  こんな感じでしょうか? 山中和義 2004/09/24 15:25:07  ツリーへ

Re: 並べ替え 返事を書く
山中和義 2004/09/24 15:25:07
こんな感じでしょうか?
ポインタのみを移動させれば良いかと思います。
値は整数化してます。

DIM a(10),b(10)
FOR i=1 TO 10
LET a(i) = INT(RND*100)
LET b(i) = i
PRINT i;"番目は値は";a(i);"です。"
NEXT i

PRINT

FOR i=1 TO 9 !i番目を基準にして
LET m = i
LET aa = a(b(i))
FOR j=i+1 TO 10 !i+1番目以降で確認する
IF a(b(j))<aa THEN !小さければ
LET aa = a(b(j))
LET m = j
END IF
NEXT j
LET bb = b(i) !入れ替える
LET b(i) = b(m)
LET b(m) = bb
NEXT i

FOR i=1 TO 10 !確認する
PRINT i;"番目に小さいのは、添え字";b(i);"番目で、値は";a(b(i));"です。"
NEXT i

END


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。