回答編集履歴

12

ちょっとした編集

2018/02/10 09:20

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -184,7 +184,7 @@
184
184
 
185
185
  しかし、この時`j`によるループは起こらず、結果的にスワップはなし。
186
186
 
187
- `i == minimum_index`なのでスワップせず、と考えても差し支えない。
187
+ `minimum_index != i`が`False`なのでスワップせず、と考えても差し支えない。
188
188
 
189
189
 
190
190
 

11

文言の編集

2018/02/10 09:20

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -272,7 +272,7 @@
272
272
 
273
273
  ```
274
274
 
275
- (`-1`は初期状態という意味とする。)
275
+ (インデックス`-1`は初期状態という意味とする。)
276
276
 
277
277
 
278
278
 

10

コードの編集

2018/02/08 14:48

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -228,7 +228,9 @@
228
228
 
229
229
 
230
230
 
231
- for i in range(length):
231
+ for i in range(length-1):
232
+
233
+ print(i-1,':',*arr)
232
234
 
233
235
  min_ind = i
234
236
 
@@ -244,10 +246,6 @@
244
246
 
245
247
  arr[min_ind],arr[i] = arr[i],arr[min_ind]
246
248
 
247
-
248
-
249
- print(i,':',*arr)
250
-
251
249
 
252
250
 
253
251
  print('sorted',':',*arr)
@@ -262,20 +260,20 @@
262
260
 
263
261
  ```plain
264
262
 
263
+ -1 : 5 9 4 1 8
264
+
265
265
  0 : 1 9 4 5 8
266
266
 
267
267
  1 : 1 4 9 5 8
268
268
 
269
269
  2 : 1 4 5 9 8
270
270
 
271
- 3 : 1 4 5 8 9
272
-
273
- 4 : 1 4 5 8 9
274
-
275
271
  sorted : 1 4 5 8 9
276
272
 
277
273
  ```
278
274
 
275
+ (`-1`は初期状態という意味とする。)
276
+
279
277
 
280
278
 
281
279
  内包表記とか考えてみましたけど、下手にいじるよりか個人的にはこれがベストな気がします。

9

ミスの発見&編集

2018/02/08 14:48

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -178,11 +178,17 @@
178
178
 
179
179
 
180
180
 
181
- のうち、`(1 4 5 8)`を除いたものの中から一番小さいものを探す。`j = 4`の時の`9`が最小。
181
+ のうち、`(1 4 5 8)`を除いたものの中から一番小さいものを探す。`9`が最小。
182
+
183
+
184
+
182
-
185
+ しかし、この時`j`によるループは起こらず、結果的にスワップはなし。
183
-
184
-
186
+
185
- `i == minimum_index`なのでスワップせず
187
+ `i == minimum_index`なのでスワップせず、と考えても差し支えない。
188
+
189
+
190
+
191
+ とにかく`9`をソート済みにする。
186
192
 
187
193
 
188
194
 

8

コード追記

2018/02/08 14:33

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -203,3 +203,73 @@
203
203
 
204
204
 
205
205
  `j`は`i`より大きい範囲で動かされ、最小の要素のインデックスを探索するのに使われています。
206
+
207
+
208
+
209
+ ## 蛇足
210
+
211
+
212
+
213
+ `for`文を使った方が可読性が高くなる気がしたので書いてみました。
214
+
215
+
216
+
217
+ ```python
218
+
219
+ arr = [5,9,4,1,8]
220
+
221
+ length = len(arr)
222
+
223
+
224
+
225
+ for i in range(length):
226
+
227
+ min_ind = i
228
+
229
+
230
+
231
+ for j in range(i+1,length):
232
+
233
+ if arr[min_ind] > arr[j]:
234
+
235
+ min_ind = j
236
+
237
+
238
+
239
+ arr[min_ind],arr[i] = arr[i],arr[min_ind]
240
+
241
+
242
+
243
+ print(i,':',*arr)
244
+
245
+
246
+
247
+ print('sorted',':',*arr)
248
+
249
+ ```
250
+
251
+
252
+
253
+ 実行結果
254
+
255
+
256
+
257
+ ```plain
258
+
259
+ 0 : 1 9 4 5 8
260
+
261
+ 1 : 1 4 9 5 8
262
+
263
+ 2 : 1 4 5 9 8
264
+
265
+ 3 : 1 4 5 8 9
266
+
267
+ 4 : 1 4 5 8 9
268
+
269
+ sorted : 1 4 5 8 9
270
+
271
+ ```
272
+
273
+
274
+
275
+ 内包表記とか考えてみましたけど、下手にいじるよりか個人的にはこれがベストな気がします。

7

文言の編集…何度もすみません…

2018/02/08 14:25

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- `1`を`i = 0`にもっきてソート済みにする。
105
+ `1`を`[5]`とスワップしてソート済みにする。
106
106
 
107
107
 
108
108
 
@@ -122,7 +122,7 @@
122
122
 
123
123
 
124
124
 
125
- `4`を`i = 1`にもっきてソート済みにする。
125
+ `4`を`[9]`とスワップしてソート済みにする。
126
126
 
127
127
 
128
128
 
@@ -142,7 +142,7 @@
142
142
 
143
143
 
144
144
 
145
- `5`を`i = 2`にもっきてソート済みにする。
145
+ `5`を`[9]`とスワップしてソート済みにする。
146
146
 
147
147
 
148
148
 
@@ -162,7 +162,7 @@
162
162
 
163
163
 
164
164
 
165
- `8`を`i = 3`にもっきてソート済みにする。
165
+ `8`を`[9]`とスワップしてソート済みにする。
166
166
 
167
167
 
168
168
 

6

文言の編集

2018/02/08 14:15

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- `1`をにもってきてソート済みにする。
105
+ `1`を`i = 0`にもってきてソート済みにする。
106
106
 
107
107
 
108
108
 
@@ -122,7 +122,7 @@
122
122
 
123
123
 
124
124
 
125
- `4`を`1`の後にもってきてソート済みにする。
125
+ `4`を`i = 1`にもってきてソート済みにする。
126
126
 
127
127
 
128
128
 
@@ -142,7 +142,7 @@
142
142
 
143
143
 
144
144
 
145
- `5`を`4`の後にもってきてソート済みにする。
145
+ `5`を`i = 2`にもってきてソート済みにする。
146
146
 
147
147
 
148
148
 
@@ -162,7 +162,7 @@
162
162
 
163
163
 
164
164
 
165
- `8`を`5`の後にもってきてソート済みにする。
165
+ `8`を`i = 3`にもってきてソート済みにする。
166
166
 
167
167
 
168
168
 

5

ブラケットのミス

2018/02/08 14:09

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- 以下のような動きをします。(`()`はソート済み、`[]`は`i`の位置(スワップ対象)を指します。
89
+ 以下のような動きをします。(`()`はソート済み、`[]`は`i`の位置(スワップ対象)を指します。)
90
90
 
91
91
 
92
92
 

4

内容改善

2018/02/08 14:06

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- 以下のような動きをします。
89
+ 以下のような動きをします。(`()`はソート済み、`[]`は`i`の位置(スワップ対象)を指します。
90
90
 
91
91
 
92
92
 
@@ -94,7 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- `5 9 4 1 8`
97
+ `[5] 9 4 1 8`
98
98
 
99
99
 
100
100
 
@@ -114,7 +114,7 @@
114
114
 
115
115
 
116
116
 
117
- `(1) 9 4 5 8`
117
+ `(1) [9] 4 5 8`
118
118
 
119
119
 
120
120
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- `(1 4) 9 5 8`
137
+ `(1 4) [9] 5 8`
138
138
 
139
139
 
140
140
 
@@ -154,7 +154,7 @@
154
154
 
155
155
 
156
156
 
157
- `(1 4 5) 9 8`
157
+ `(1 4 5) [9] 8`
158
158
 
159
159
 
160
160
 
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
- `(1 4 5 8) 9`
177
+ `(1 4 5 8) [9]`
178
178
 
179
179
 
180
180
 

3

ちょっとした追記

2018/02/08 14:04

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -187,3 +187,19 @@
187
187
 
188
188
 
189
189
  `(1 4 5 8 9)`
190
+
191
+
192
+
193
+ #
194
+
195
+
196
+
197
+ このソートにおいて、
198
+
199
+
200
+
201
+ `i`は`()`より右側の要素のうち一番小さいインデックス(ここがスワップ対象になる)を指し、
202
+
203
+
204
+
205
+ `j`は`i`より大きい範囲で動かされ、最小の要素のインデックスを探索するのに使われています。

2

不要な要素の削除

2018/02/08 14:00

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  minimum_index = j
30
30
 
31
- j+=1 # 更新 (※)
31
+ j+=1 # 更新
32
32
 
33
33
 
34
34
 
@@ -82,7 +82,7 @@
82
82
 
83
83
 
84
84
 
85
- このロジックは[選択ソート](https://ja.wikipedia.org/wiki/%E9%81%B8%E6%8A%9E%E3%82%BD%E3%83%BC%E3%83%88)す。
85
+ このロジックは[選択ソート](https://ja.wikipedia.org/wiki/%E9%81%B8%E6%8A%9E%E3%82%BD%E3%83%BC%E3%83%88)と言います。
86
86
 
87
87
 
88
88
 

1

脱字の挿入

2018/02/08 13:54

投稿

namnium1125
namnium1125

スコア2043

test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
 
120
120
 
121
- のうち、`(1)`を除いたから一番小さいものを探す。`j = 2`の時の`4`が最小。
121
+ のうち、`(1)`を除いたものの中から一番小さいものを探す。`j = 2`の時の`4`が最小。
122
122
 
123
123
 
124
124
 
@@ -138,7 +138,7 @@
138
138
 
139
139
 
140
140
 
141
- のうち、`(1 4)`を除いたから一番小さいものを探す。`j = 3`の時の`5`が最小。
141
+ のうち、`(1 4)`を除いたものの中から一番小さいものを探す。`j = 3`の時の`5`が最小。
142
142
 
143
143
 
144
144
 
@@ -158,7 +158,7 @@
158
158
 
159
159
 
160
160
 
161
- のうち、`(1 4 5)`を除いたから一番小さいものを探す。`j = 4`の時の`8`が最小。
161
+ のうち、`(1 4 5)`を除いたものの中から一番小さいものを探す。`j = 4`の時の`8`が最小。
162
162
 
163
163
 
164
164
 
@@ -178,7 +178,7 @@
178
178
 
179
179
 
180
180
 
181
- のうち、`(1 4 5 8)`を除いたから一番小さいものを探す。`j = 4`の時の`9`が最小。
181
+ のうち、`(1 4 5 8)`を除いたものの中から一番小さいものを探す。`j = 4`の時の`9`が最小。
182
182
 
183
183
 
184
184