Perlでバブルソートを作ってみました。
あくまでも基礎情報の学習用です。

   @list = qw[80 60 40 70 30 10 50 20];
   for($out_idx = (@list -1); $out_idx >= 1; $out_idx--){
       for($in_idx = 0; $in_idx < $out_idx; $in_idx++){
   
           $flg = 0;
       
           if( $list[$in_idx] > $list[$in_idx+1]){
               #数値を交換
               ($list[$in_idx], $list[$in_idx+1]) 
                      = ($list[$in_idx+1], $list[$in_idx]);
               $flg = 1;
           }
       
           if($flg == 1){
               print "交換:○, ";
           }else{
               print "交換:×, ";
           }
       
           print "外:".$out_idx;
           print ", 内:".$in_idx.", ";
           foreach(@list){
               print $_." ";
           }
           print "\n";
       }
   }

  • 出力結果

交換:○, 外:7, 内:0, 60 80 40 70 30 10 50 20
交換:○, 外:7, 内:1, 60 40 80 70 30 10 50 20
交換:○, 外:7, 内:2, 60 40 70 80 30 10 50 20
交換:○, 外:7, 内:3, 60 40 70 30 80 10 50 20
交換:○, 外:7, 内:4, 60 40 70 30 10 80 50 20
交換:○, 外:7, 内:5, 60 40 70 30 10 50 80 20
交換:○, 外:7, 内:6, 60 40 70 30 10 50 20 80
交換:○, 外:6, 内:0, 40 60 70 30 10 50 20 80
交換:×, 外:6, 内:1, 40 60 70 30 10 50 20 80
交換:○, 外:6, 内:2, 40 60 30 70 10 50 20 80
交換:○, 外:6, 内:3, 40 60 30 10 70 50 20 80
交換:○, 外:6, 内:4, 40 60 30 10 50 70 20 80
交換:○, 外:6, 内:5, 40 60 30 10 50 20 70 80
交換:×, 外:5, 内:0, 40 60 30 10 50 20 70 80
交換:○, 外:5, 内:1, 40 30 60 10 50 20 70 80
交換:○, 外:5, 内:2, 40 30 10 60 50 20 70 80
交換:○, 外:5, 内:3, 40 30 10 50 60 20 70 80
交換:○, 外:5, 内:4, 40 30 10 50 20 60 70 80
交換:○, 外:4, 内:0, 30 40 10 50 20 60 70 80
交換:○, 外:4, 内:1, 30 10 40 50 20 60 70 80
交換:×, 外:4, 内:2, 30 10 40 50 20 60 70 80
交換:○, 外:4, 内:3, 30 10 40 20 50 60 70 80
交換:○, 外:3, 内:0, 10 30 40 20 50 60 70 80
交換:×, 外:3, 内:1, 10 30 40 20 50 60 70 80
交換:○, 外:3, 内:2, 10 30 20 40 50 60 70 80
交換:×, 外:2, 内:0, 10 30 20 40 50 60 70 80
交換:○, 外:2, 内:1, 10 20 30 40 50 60 70 80
交換:×, 外:1, 内:0, 10 20 30 40 50 60 70 80





| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー