回答編集履歴
2
説明の修正
answer
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
正の数と負の数が混ざっている場合、data[j] が負の数なら
|
51
51
|
比較対象になるので、変なソート結果になることがあります。
|
52
52
|
|
53
|
-
それから、こ
|
53
|
+
それから、この質問のコードはバブルソートではありません。
|
54
54
|
バブルソートというのは、隣り合う配列要素同士を比較するものです。
|
55
55
|
data[i] と data[j] は離れています。
|
56
56
|
|
@@ -59,9 +59,8 @@
|
|
59
59
|
data[0]~data[5] の中から最大値を求めて data[0] に入れる。
|
60
60
|
data[1]~data[5] の中から最大値を求めて data[1] に入れる。
|
61
61
|
というのを繰り返します。
|
62
|
+
質問のコードはそうなっていません。
|
62
63
|
|
63
|
-
コードはそうなっていません。
|
64
|
-
|
65
64
|
data[0]~data[5] の中から最小値を求めて data[0] に入れる。
|
66
65
|
data[0]~data[5] の中から最小値を求めて data[1] に入れる。
|
67
66
|
...
|
@@ -69,6 +68,8 @@
|
|
69
68
|
|
70
69
|
結果としてはちゃんとソートされます。
|
71
70
|
|
71
|
+
なお、私が書いた for文一つのコードは選択ソートです。
|
72
|
+
|
72
73
|
ソートに for文を一つも使わなくて書けることを示します。
|
73
74
|
while文にするわけではありません。
|
74
75
|
```Java
|
1
質問のこーどの疑問点を追加
answer
CHANGED
@@ -35,4 +35,66 @@
|
|
35
35
|
System.out.println();
|
36
36
|
}
|
37
37
|
}
|
38
|
+
```
|
39
|
+
**追記**
|
40
|
+
解決済みになりましたが、どのように理解して解釈済みにしたのかを、
|
41
|
+
回答に対するコメントか、質問への追加かで書いてもらいたいものです。
|
42
|
+
|
43
|
+
質問のコードには疑問点があります。
|
44
|
+
```Java
|
45
|
+
if (data[i] < 0) {
|
46
|
+
} else if (data[i] > data[j]) {
|
47
|
+
```
|
48
|
+
なぜ data[i] が負の場合、比較対象にしないのでしょうか?
|
49
|
+
入力データが全部負の数の場合、ソートは行われません。
|
50
|
+
正の数と負の数が混ざっている場合、data[j] が負の数なら
|
51
|
+
比較対象になるので、変なソート結果になることがあります。
|
52
|
+
|
53
|
+
それから、これはバブルソートではありません。
|
54
|
+
バブルソートというのは、隣り合う配列要素同士を比較するものです。
|
55
|
+
data[i] と data[j] は離れています。
|
56
|
+
|
57
|
+
選択ソートかというと、そうでもありません。
|
58
|
+
選択ソートというのは、降順(大きい順)の場合、
|
59
|
+
data[0]~data[5] の中から最大値を求めて data[0] に入れる。
|
60
|
+
data[1]~data[5] の中から最大値を求めて data[1] に入れる。
|
61
|
+
というのを繰り返します。
|
62
|
+
|
63
|
+
コードはそうなっていません。
|
64
|
+
|
65
|
+
data[0]~data[5] の中から最小値を求めて data[0] に入れる。
|
66
|
+
data[0]~data[5] の中から最小値を求めて data[1] に入れる。
|
67
|
+
...
|
68
|
+
data[0]~data[5] の中から最小値を求めて data[5] に入れる。
|
69
|
+
|
70
|
+
結果としてはちゃんとソートされます。
|
71
|
+
|
72
|
+
ソートに for文を一つも使わなくて書けることを示します。
|
73
|
+
while文にするわけではありません。
|
74
|
+
```Java
|
75
|
+
import java.util.Scanner;
|
76
|
+
|
77
|
+
public class SortArray {
|
78
|
+
static int[] data = new int[6];
|
79
|
+
|
80
|
+
static void print(String s) {
|
81
|
+
for (int e : data) { System.out.print(s + e); s = ","; }
|
82
|
+
System.out.println();
|
83
|
+
}
|
84
|
+
|
85
|
+
static void sort(int i, int j) {
|
86
|
+
if (data[i] < data[j]) {
|
87
|
+
int a = data[i]; data[i] = data[j]; data[j] = a;
|
88
|
+
}
|
89
|
+
if (++j < data.length || (j = ++i) < data.length) sort(i, j);
|
90
|
+
}
|
91
|
+
|
92
|
+
public static void main(String[]args) {
|
93
|
+
Scanner sc = new Scanner(System.in);
|
94
|
+
for (int i = 0; i < data.length; i++) data[i] = sc.nextInt();
|
95
|
+
print("配列dataは、");
|
96
|
+
sort(0, 0);
|
97
|
+
print("配列orderは、");
|
98
|
+
}
|
99
|
+
}
|
38
100
|
```
|