A 回答 (2件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
私も Java を学び始めたのは、ごく最近です。
昨日 Eclipse という Java 製のエディタをインストールしました。
以下長文です。
日本語文字を使う場合は、文字エンコーディングに、特に気をつけて、
コピーすると良いと思います。
コマンドラインでも、-encoding オプションで指定できます。
javac -encoding UTF-8 ソースUTF-8.java
とか、
javac -encoding Shift_JIS ソースShift_JIS.java
本題です。
奥村晴彦、他『Java によるアルゴリズム事典』技術評論社、2003
http://oku.edu.mie-u.ac.jp/~okumura/java-algo/
を参照しています。上の URL に本文中の Java のソースが全て公開されています。
整列アルゴリズムで、選択ソートの代わりに、挿入ソートを使います。
入力:
id ? 1
lang ? 10
math ? 0
id ? 2
lang ? 5
math ? 5
id ? 3
lang ? 0
math ? 10
id ? 4
lang ? 8
math ? 8
id ? 5
lang ? 10
math ? 10
前に回答したものの出力:
in:
1 10 0
2 5 5
3 0 10
4 8 8
5 10 10
out:
5 10 10
4 8 8
1 10 0
3 0 10
2 5 5
選択ソートは安定でないので、整列はされていますが、
同じ合計点の 1、2、3 番目が、入れ替わっています。
今回の出力:
Before:
1 10 0
2 5 5
3 0 10
4 8 8
5 10 10
After:
5 4 1 2 3
挿入ソートは安定なので、同じ合計点の 1、2、3 番目の順序が
保たれています。
After: に番号だけを出力するようにしました。
納得いく回答があるまで、質問は閉じないほうが良いと思います。
わからない部分を 補足 で言ってくれるのが良いと思います。
import java.io.*;
class QA8296322No1 {
private final static int student = 5;
private final static int subject = 3; // (id lang math)
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int[][] score = new int[student][subject];
for (int i = 0;i < student; i++) {
int[] person = new int[subject];
for (int j = 0; j < subject; j++) {
String prompt = new String();
if (j == 0) { prompt = "id ? "; }
else if (j == 1) { prompt = "lang ? "; }
else if (j == 2) { prompt = "math ? "; }
else { System.exit(1); }
System.out.print(prompt);
score[i][j] = Integer.parseInt(in.readLine());
}
}
System.out.println("Before:");
for (int i = 0; i < student; i++) {
for (int j = 0; j < subject; j++) {
System.out.print(score[i][j]);
if (j != subject - 1) { System.out.print(" "); }
}
System.out.println();
}
// insert sort
// via (c) 2003 Okumura, "Algorithm Encyclopedia by Java", Tokyo, Japan.
for (int i = 1; i < student; i++) {
int[] save = score[i];
int save_point = save[1] + save[2];
int j = i - 1;
for ( ; j >= 0; j--) {
int[] compare = score[j];
int compare_point = compare[1] + compare[2];
if (compare_point >= save_point) { break; }
else { score[j + 1] = score[j]; }
}
score[j + 1] = save;
}
// via end.
System.out.println("After:");
for (int i = 0; i < student; i++) {
System.out.print(score[i][0]);
if (i <= student - 1) { System.out.print(" "); }
}
System.out.println();
}
}
No.4
- 回答日時:
http://oshiete.goo.ne.jp/qa/8293186.html
こちらで、ほぼ正解という回答もらってますよね?
> 合計が高いもの順にがめんに出力なのに合計が低いじゅんになってますよ??勘違いだったらすいません
だったら、出力順を逆にすればいいだけじゃないですか。
順番を逆にするのは
http://oshiete.goo.ne.jp/qa/8293175.html
でやってますよね?
あるいは
// via end.
System.out.println("out:");
for (int i = 0; i < student; i++) {
で
学生0
学生1
..
学生student-1
と出力した結果が逆順になっているのなら
学生student-1
学生student-2
..
学生0
と反転させて出力すればいいだけです。
「簡単」ということなら、sortとかreverseとか使った方がよっぽど「簡単」です。
見ただけで「並び換えてるな」「逆順にしてるな」ってわかるんですから
こちらで、ほぼ正解という回答もらってますよね?
> 合計が高いもの順にがめんに出力なのに合計が低いじゅんになってますよ??勘違いだったらすいません
だったら、出力順を逆にすればいいだけじゃないですか。
順番を逆にするのは
http://oshiete.goo.ne.jp/qa/8293175.html
でやってますよね?
あるいは
// via end.
System.out.println("out:");
for (int i = 0; i < student; i++) {
で
学生0
学生1
..
学生student-1
と出力した結果が逆順になっているのなら
学生student-1
学生student-2
..
学生0
と反転させて出力すればいいだけです。
「簡単」ということなら、sortとかreverseとか使った方がよっぽど「簡単」です。
見ただけで「並び換えてるな」「逆順にしてるな」ってわかるんですから
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドライン引数の例外処理...
-
論理演算子”||”またはの入力方法
-
友達に問題を出されて・・・、...
-
JAVAプログラミング
-
Javaでキーボードから入力され...
-
ループ処理の際、最後だけ","を...
-
ヒストグラム
-
javaで2重forループを使い 123 ...
-
javaで素数判断プログラム作成...
-
【JAVA <identifier>がありま...
-
階乗
-
forループである条件に達したら...
-
7つ数字を表示したら改行すると...
-
javaが上手くいきません
-
VBAで配列の計算
-
最後の行に移動するには?
-
パソコンキーボードで時分秒を...
-
全角英数字とハイフンを半角に...
-
Java配列でNullPointerExceptio...
-
Javaで改行などが出来ないのです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
論理演算子”||”またはの入力方法
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
テキストボックスに入力された...
-
java キーボード入力された値の...
-
総称型ArrayList<E>への参照...
-
数値⇒漢数字変換 java
-
エラー(互換性の無い型)
-
countに実行した回数をいれたい...
-
コマンドライン引数の例外処理...
-
Ctrl+Zが入力されると終了する...
-
javaプログラムについて
-
7つ数字を表示したら改行すると...
-
JAVAのfor文で困っています。
-
javaで入力した数字の順番を記...
-
Randomメソッドの確率設定
-
Java、2の0乗~10乗の表示
-
2次元配列の並び替え
-
javaについての質問です
-
繰り返しによる星印の出力
おすすめ情報