こんにちは、Perlを始めたばかりの初心者です。
さっそく質問の方失礼します。
乱数1~100までの数字のうち20個をとりだし配列にいれ、数字を昇順に入れ替えして昇順前と昇順後の数字を表示する問題なのですが。
@a[100]=(1..100);
srand(time());
for($i=0 ; $i<20 ; $i++){
$a=int(rand(@a));
print"$a\n";
}
と上記の乱数20個を取り出すことができたのですが、
そのあとの昇順させようとしてバブルソートを利用したいのですが、どのように組み込めばいいかわかりません。
どのように組み込めばいいのでしょうか?
お答えの方ヨロシクお願いします。
No.3ベストアンサー
- 回答日時:
@a=(1..100);
srand(time());
for($i=0 ; $i<20 ; $i++){
$before[$i]=$a[rand @a];
}
@after = sort { $a <=> $b } @before;
print "before:\n";
print join(",",@before) ;
print "\nafter:\n";
print join(",",@after) . "\n";
お答えいただき有難うございます。
こちらが作ったものと比べるととても
綺麗にまとまっていたので驚かされました。
参考にさせて頂きました。
ありがとうございます。
No.2
- 回答日時:
@b = sort { $a <=> $b; } @a;
で @a に入っている要素を数値として比較し, 昇順に @b に入れます. 文字列として比較したければ
@b = sort { $a cmp $b; } @a;
降順だったら, 数値の場合には
@b = sort { $b <=> $a; } @a;
文字列の場合には
@b = sort { $b cmp $a; } @a;
一般には
sort ブロック 配列
の形で, ブロックの部分は評価して数値になる必要があります. ブロックの中では特殊な変数として $a, $b を使います. 結果として得られる配列は, 前の方の要素を $a, 後ろの方の要素を $b としたときにこのブロックの返す値が 0 以下になるようなものとなります.
例えば { $a <=> $b; } というブロックだと, 最終的に得られる配列は ((前の方の要素) <=> (後ろの方の要素)) <= 0, つまり (前の方の要素) <= (後ろの方の要素) を満たすものになるので昇順にソートできる, ということになります.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Java Java配列の問題を教えてください。 乱数で20個出力し、最大、最小、合計、平均を求め、更に昇順にソ 3 2023/07/10 18:32
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
- Excel(エクセル) エクセルのソート方法について 1 2023/01/13 00:01
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の民法についての質問になります。 時効についての質問になります。 問 Aが甲債権の担保と 1 2023/07/06 21:51
- 弁護士・行政書士・司法書士・社会保険労務士 ★行政書士試験の民法についての質問になります。 時効についての質問になります。 問 Aが甲債権の担保 1 2023/05/22 21:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
可変長配列を、動的確保した固...
-
リストボックスに縦スクロール...
-
2次元配列or複数回のファイル読...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
perl qw(aaa bbb ccc)[$hoge]...
-
文字列の分割について
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
vba
-
アクティブセルから、A列最終行...
-
データベースから取得したデー...
-
VBA Dir関数でファイルをループ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列のインデックスについて
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
組み合わせについての質問です...
-
隣同士の数字を足し合わせる
-
複数の配列の全ての組み合わせ...
-
perl 初等プログラミングについて
-
jcode->jfold で禁則処理
-
一致する要素が格納されている...
-
チェックボックスのperlでの値...
おすすめ情報