バブルソートについて理解ができなくて困っています。
問題
整数を 10 回入力し、小さい順に並べ替えて表示するプログラムを作成してください。
コード
// bufferedReaderを初期化 BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); // String 型の変数 s を宣言 String s = ""; // 入力回数(1~10) int count = 1; int x = 0; // int 型の配列を表す変数 values を宣言し、10個の要素を代入 int values[] = new int[10]; // 再入力できるようwhile文を用いてcountが10以下の間、ループする while(count <= 10) { try { // ガイドを表示 System.out.println(count + "個目の数値を入力してください"); // 1行分の文字列を読み込む s = buffer.readLine(); // 入力された文字列を int 型に変換し、変数 values に代入する values[count - 1] = Integer.parseInt(s); // 回数を加算(1~10) count++; } catch (NumberFormatException e) { // エラーメッセージを表示 System.out.println("数値のみ入力できます、再度数値を入力してください"); // 再入力 continue; } catch (IOException e) { // エラーメッセージを表示 System.out.println("予期せぬエラーが発生しました、再度数値を入力してください"); // 再入力 continue; } } // バブルソートを使い、昇順に10個の数値を並べ替える for(int j = 0; j < (10 - 1); j++) { for(int i = 0; i < (10 - 1) -j; i++) { if(values[i] > values[(i + 1)]) { x = values[i]; values[i] = values[(i+1)]; values[(i + 1)] = x; } } } // バブルソートで昇順に並べ替えた数値を全て表示 for(int i = 0; i < 10; i++) { // 入力され昇順に並び替えられた数値を表示 System.out.println((i + 1) + "個目の値:" + values[i]); } } }
この問題のラストのバブルソートを使い~~の部分なのですが、どうしてこのようなコードになるのかが、調べても理解できず困っています。解説をお願いしたいです。。。
なぜ(10-1)なのか、配列が0からだから?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。