teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

修正しました。

2020/06/26 13:08

投稿

nikaho
nikaho

スコア3

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  ### 該当のソースコード
21
21
 
22
22
  ```java
23
- public class Quick {
23
+ public class QuickSort {
24
24
 
25
25
  ArrayList<Integer> array = new ArrayList<Integer>();
26
26
 

4

修正しました。

2020/06/26 13:08

投稿

nikaho
nikaho

スコア3

title CHANGED
File without changes
body CHANGED
@@ -13,8 +13,8 @@
13
13
  at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
14
14
  at java.base/java.util.Objects.checkIndex(Objects.java:373)
15
15
  at java.base/java.util.ArrayList.get(ArrayList.java:426)
16
- at Quick.Quick1(Quick.java:24)
16
+ at Quick.Quick(Quick.java:24)
17
- at Quick.Quick1(Quick.java:35)
17
+ at Quick.Quick(Quick.java:35)
18
18
  ```
19
19
 
20
20
  ### 該当のソースコード

3

修正しました

2020/06/26 11:44

投稿

nikaho
nikaho

スコア3

title CHANGED
File without changes
body CHANGED
@@ -13,8 +13,8 @@
13
13
  at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
14
14
  at java.base/java.util.Objects.checkIndex(Objects.java:373)
15
15
  at java.base/java.util.ArrayList.get(ArrayList.java:426)
16
- at kadai7.S7018534_Quick.Quick1(S7018534_Quick.java:24)
16
+ at Quick.Quick1(Quick.java:24)
17
- at kadai7.S7018534_Quick.Quick1(S7018534_Quick.java:35)
17
+ at Quick.Quick1(Quick.java:35)
18
18
  ```
19
19
 
20
20
  ### 該当のソースコード

2

ご指摘頂いた部分を修正しました。

2020/06/26 11:43

投稿

nikaho
nikaho

スコア3

title CHANGED
File without changes
body CHANGED
@@ -7,17 +7,14 @@
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
9
  ```
10
- Exception in thread "main" java.lang.StackOverflowError
10
+ Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
11
+ at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
12
+ at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
13
+ at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
11
- at java.base/java.util.Arrays.copyOf(Arrays.java:3480)
14
+ at java.base/java.util.Objects.checkIndex(Objects.java:373)
12
- at java.base/java.util.ArrayList.grow(ArrayList.java:236)
13
- at java.base/java.util.ArrayList.grow(ArrayList.java:243)
14
- at java.base/java.util.ArrayList.add(ArrayList.java:453)
15
- at java.base/java.util.ArrayList.add(ArrayList.java:466)
15
+ at java.base/java.util.ArrayList.get(ArrayList.java:426)
16
- at Quick.Quick(Quick.java:27)
16
+ at kadai7.S7018534_Quick.Quick1(S7018534_Quick.java:24)
17
- at Quick.Quick(Quick.java:34)
17
+ at kadai7.S7018534_Quick.Quick1(S7018534_Quick.java:35)
18
- at Quick.Quick(Quick.java:34)
19
- at Quick.Quick(Quick.java:34)
20
- ...
21
18
  ```
22
19
 
23
20
  ### 該当のソースコード
@@ -38,8 +35,8 @@
38
35
 
39
36
  //一番左の値をピボットとして分割処理
40
37
  int P = array.get(0);
41
- for (int i=0; i<size; i++) {
38
+ for (int i=1; i<size; i++) {
42
- if (P >= array.get(i)) {
39
+ if (P > array.get(i)) {
43
40
  L.add(array.get(i));
44
41
  }else {
45
42
  R.add(array.get(i));
@@ -53,15 +50,15 @@
53
50
  array.clear();
54
51
 
55
52
  //分割した値を統合
56
- int indexL = 0, indexR = 0;
57
- while (indexL<L.size() || indexR<R.size()) {
58
- if (indexL == L.size()) {
53
+ for (int i=0; i<L.size(); i++) {
59
- array.add(R.get(indexR)); indexR++;
60
- }
61
- else if (indexR == R.size()) {
62
- array.add(L.get(indexL)); indexL++;
54
+ array.add(L.get(i));
63
- }
64
55
  }
56
+
57
+ array.add(P);
58
+
59
+ for (int i=0; i<R.size(); i++) {
60
+ array.add(R.get(i));
61
+ }
65
62
  }
66
63
  }
67
64
  ```

1

すみません。こちらにミスです。

2020/06/26 11:41

投稿

nikaho
nikaho

スコア3

title CHANGED
File without changes
body CHANGED
@@ -28,7 +28,7 @@
28
28
  ArrayList<Integer> array = new ArrayList<Integer>();
29
29
 
30
30
  //クイックソート
31
- void Quick1(ArrayList<Integer> array) {
31
+ void Quick(ArrayList<Integer> array) {
32
32
  int size = array.size();
33
33
 
34
34
  //listの大きさが1なら再帰終了
@@ -56,10 +56,10 @@
56
56
  int indexL = 0, indexR = 0;
57
57
  while (indexL<L.size() || indexR<R.size()) {
58
58
  if (indexL == L.size()) {
59
- array1.add(R.get(indexR)); indexR++;
59
+ array.add(R.get(indexR)); indexR++;
60
60
  }
61
61
  else if (indexR == R.size()) {
62
- array1.add(L.get(indexL)); indexL++;
62
+ array.add(L.get(indexL)); indexL++;
63
63
  }
64
64
  }
65
65
  }