回答編集履歴
3
追記
answer
CHANGED
@@ -13,4 +13,15 @@
|
|
13
13
|
}
|
14
14
|
//}
|
15
15
|
|
16
|
-
```
|
16
|
+
```
|
17
|
+
|
18
|
+
---
|
19
|
+
6個の要素から最大値(最小値)を探すには、5回の比較が必要になります。
|
20
|
+
並べ替えをするので、全要素の最大(最小)を比べる必要があります。
|
21
|
+
※最大値(最小値)を先頭にしても残りがバラバラでは意味がない
|
22
|
+
|
23
|
+
残りの5個から最大値(最小値)を探すには、4回、残りから・・・
|
24
|
+
と、要素数-1の階乗回数の比較が必要です。(過去質問でバブルソートの比較回数を減らすというのがありましたが)
|
25
|
+
で、ご提示のロジックでは、バブルソートを少し変えて、要素数の2乗の比較をするようにしています。
|
26
|
+
|
27
|
+
ループの外側(内側)が、要素数しか回らないのであれば、2重ループにして比較を増やす必要があります。
|
2
あぁ・・・ハードコーディング多かった
answer
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
```java
|
5
5
|
//for (int i = 0; i < data.length; i = i + 1) { //大きい順番にする
|
6
6
|
for (int j = 0; j < data.length * data.length ; j = j + 1) {
|
7
|
-
if (data[j/
|
7
|
+
if (data[j/data.length] < 0) {
|
8
|
-
} else if (data[j/
|
8
|
+
} else if (data[j/data.length] > data[j%data.length]) {
|
9
|
-
int a = data[j/
|
9
|
+
int a = data[j/data.length];
|
10
|
-
data[j/
|
10
|
+
data[j/data.length] = data[j%data.length];
|
11
|
-
data[j%
|
11
|
+
data[j%data.length] = a;
|
12
12
|
}
|
13
13
|
}
|
14
14
|
//}
|
1
さぼったところ直しわすれたので
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
変数を2つ使った方がわかりやすいとは思います。
|
4
4
|
```java
|
5
5
|
//for (int i = 0; i < data.length; i = i + 1) { //大きい順番にする
|
6
|
-
for (int j = 0; j < data.length *
|
6
|
+
for (int j = 0; j < data.length * data.length ; j = j + 1) {
|
7
7
|
if (data[j/6] < 0) {
|
8
8
|
} else if (data[j/6] > data[j%6]) {
|
9
9
|
int a = data[j/6];
|