###バブルソート?の実装ができない
題目通りです。
私はノベルゲームを作っています。
しかし、いわゆるログ画面の構築において、「物語中のテキストを表示する」部分で詰まりました。
「物語中のテキストを表示する」というのは、つまり「ある時点一文」から順番に「指定の範囲まで遡った一文」までの文を順繰りにとってきて、整列させ、表示することです。しかし、その一文一文が意図したものと逆順になってしまうのが問題点です。そこでバブルソートが必要なのかな?と思いました。しかし失敗しました。
以下にコードを記します。
テキストの処理は省略し、必要な変数の処理のところだけ書きました。
何がしたいかの説明は、コメント中に書いておきます。
そのほうがここで書くより分かりやすくなると思ったので・・・
バブルソートの試みをしていない、元のコード
lang
1//途中で出てくるint型のnumはゲームプレイヤーがボタンを押すと1ずつ上がる仕組みになっている。 2//ここでは仮に3が入るとする。 3 int [] label = new int[5]; 4 5 for(int m=0;m<5&&m<=num;m++){//「m<5」は遡れる範囲が5であることを示す 6 //「m<=num」は5になるときまで、遡れる範囲がnumであることを示す。 7 label[m] = num - m;//例えばnumが3だとする。するとlabel[0]に3が入ってしまう。 8 //そうではなくlabel[0]に0、label[3]に3をというふうに入れたい。 9 //よってバブルソートが必要となると思った 10 11}
一応バブルソートの試みをして、失敗したコードも乗せておきます・・・
lang
1int [] label = new int[5];//上記のコードと一緒 2 3 for(int m=0;m<5&&m<=num;m++){ 4 label[m] = num - m; 5 //試したバブルソート 6 if (m!=0&&label[m-1]>label[m]) {//m!=0はmが0のときm-1がマイナスになるのを防ぐため 7 for (int t = 0; t <= num; t++) { 8 hozon=label[m-1]; 9 label[m-1]=label[m]; 10 label[m]=hozon; 11 } 12 } 13} 14//これをやると、同じテキストが表示されるようになりました・・・
あまり上手く説明できず、申し訳ありません。
情けない話ですが、どうやら私は数学的思考力に乏しいみたく、どうしても思った通り変数を整列させられませんでした・・・
最後にもう一度今回の質問の要約をします。
「どうすればlabel[0]に0、label[1]に1・・・label[3]に3というふうに変数を整列させることができるのか?」です・・・・
どうかご助力お願いいたします・・・!
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。