回答編集履歴

3

追記

2020/10/15 01:25

投稿

momon-ga
momon-ga

スコア4820

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

あぁ・・・ハードコーディング多かった

2020/10/15 01:25

投稿

momon-ga
momon-ga

スコア4820

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/6] < 0) {
13
+ if (data[j/data.length] < 0) {
14
14
 
15
- } else if (data[j/6] > data[j%6]) {
15
+ } else if (data[j/data.length] > data[j%data.length]) {
16
16
 
17
- int a = data[j/6];
17
+ int a = data[j/data.length];
18
18
 
19
- data[j/6] = data[j%6];
19
+ data[j/data.length] = data[j%data.length];
20
20
 
21
- data[j%6] = a;
21
+ data[j%data.length] = a;
22
22
 
23
23
  }
24
24
 

1

さぼったところ直しわすれたので

2020/10/14 12:11

投稿

momon-ga
momon-ga

スコア4820

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 * 6 ; j = j + 1) {
11
+ for (int j = 0; j < data.length * data.length ; j = j + 1) {
12
12
 
13
13
  if (data[j/6] < 0) {
14
14