HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0516
麒麟複数の配列の中の要素を比較したいんですが…2未解決


麒麟

リンク

2019/5/16(Thu) 19:05:13|NO.87362

複数の配列化した変数の最初の要素を比較して、上位10番目を出したいのですが、
なにか効率のいい方法はありませんか?



この記事に返信する


さか

リンク

2019/5/16(Thu) 21:39:14|NO.87365

こういうことですか?

サンプルのまんまですが。

; 配列変数のソート ; (HSP3.5からソートが標準命令になりました) ; kaz=20 dim n,kaz pos 0,0 repeat kaz n.cnt = rnd(100) mes "N["+cnt+"]="+n.cnt loop sortval n,0 pos 320,0 repeat kaz sortget a,cnt mes "sort N["+cnt+"]="+n.cnt+"("+a+")" loop stop



雪月夜

リンク

2019/5/21(Tue) 09:29:38|NO.87415

複数の配列が二次元配列のことなら、以下の処理で並べ替えができます

#module #deffunc dim2sort array dt,int order ;並べ替え処理 len=length2(dt) repeat len-1,1:i=cnt j=i repeat if j<=0:break if order=0{ if dt(0,j-1)<=dt(0,j):break ;「>=」にすると降順 }else{ if dt(0,j-1)>=dt(0,j):break ;「>=」にすると降順 } repeat length(dt) tmp=dt(cnt,j-1) dt(cnt,j-1)=dt(cnt,j) dt(cnt,j)=tmp loop j-- loop loop return #global randomize len=20 ;データ総数 dim dt,2,len repeat len dt(0,cnt)=rnd(len),rnd(len) ;データ作成 mes"data("+dt(0,cnt)+", "+dt(1,cnt)+")" loop dim2sort dt ;結果 pos 140,0 repeat 10 mes"sortdata("+dt(0,cnt)+", "+dt(1,cnt)+")" loop



ONION software Copyright 1997-2023(c) All rights reserved.