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

質問編集履歴

3

コードの内容の変更と結果の提示

2020/07/01 22:46

投稿

GAKU_SAY
GAKU_SAY

スコア23

title CHANGED
File without changes
body CHANGED
@@ -7,8 +7,20 @@
7
7
  c++
8
8
 
9
9
  ###欲しい情報
10
- 解決方法またはエラーの解決に関する情報
10
+ 解決方法に関する情報
11
11
 
12
+ ###結果
13
+ 1
14
+ 0
15
+ 0
16
+ 0
17
+ 1886912525
18
+ 1835627109
19
+ 1635020389
20
+ 1634557804
21
+ 1701535600
22
+ 121
23
+
12
24
  ###コード
13
25
 
14
26
  ```c++
@@ -163,10 +175,20 @@
163
175
 
164
176
  int HeapSort(){
165
177
 
166
- /***array_intをヒープ構造にしたい***/
178
+ int *aps = (int*)malloc(sizeof(int)*size);
179
+ int i=0;
180
+ int past = size;
167
181
 
182
+ size = 1;
183
+ aps[0] = array_int[0];
168
184
 
185
+ for (i=size; i<past; i++) {
186
+ insert(aps[i]);
187
+ }
169
188
 
189
+ free(array_int);
190
+ array_int = aps;
191
+
170
192
  return 0;
171
193
  }
172
194
 

2

コードの修正

2020/07/01 22:46

投稿

GAKU_SAY
GAKU_SAY

スコア23

title CHANGED
File without changes
body CHANGED
@@ -163,25 +163,10 @@
163
163
 
164
164
  int HeapSort(){
165
165
 
166
- int *aps = (int*)malloc(sizeof(int)*size);
166
+ /***array_intをヒープ構造にしたい***/
167
- int i=0;
168
- int past = size;
169
- size = 3;
170
167
 
171
- for (i=0; i<size; i++) {
172
- aps[i] = array_int[i];
173
- }
174
168
 
175
- for (; i<past; i++) {
176
- insert(array_int[i]);
177
- }
178
- size = past;
179
169
 
180
- free(array_int);
181
- array_int = aps;
182
-
183
-
184
-
185
170
  return 0;
186
171
  }
187
172
 

1

コードが間違ってました。

2020/07/01 22:34

投稿

GAKU_SAY
GAKU_SAY

スコア23

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,6 @@
1
1
  ###したいこと
2
2
  配列array_intをヒープ条件に合うように並び替えたい。
3
3
 
4
- ###エラー内容
5
- HeapSort()内のinsert(i);の内部のshiftdown()で「Thread 1: EXC_BAD_ACCESS (code=1, address=0x10851ec9c)」というエラーが起きます。理由は多分、i>>sizeだからだと思います。
6
-
7
4
  ###条件
8
5
  なるべく関数を書き換えたくないです。(名称は絶対に)
9
6
  xcode
@@ -166,11 +163,25 @@
166
163
 
167
164
  int HeapSort(){
168
165
 
169
- int i = deletemin<int>();
166
+ int *aps = (int*)malloc(sizeof(int)*size);
167
+ int i=0;
168
+ int past = size;
169
+ size = 3;
170
170
 
171
+ for (i=0; i<size; i++) {
171
- insert(i);
172
+ aps[i] = array_int[i];
173
+ }
172
174
 
175
+ for (; i<past; i++) {
176
+ insert(array_int[i]);
177
+ }
178
+ size = past;
173
179
 
180
+ free(array_int);
181
+ array_int = aps;
182
+
183
+
184
+
174
185
  return 0;
175
186
  }
176
187