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