What's the fastest way to alphabetize your bookshelf? - Chand John
アルファベット順に本を並べる最速の方法 ― チャンド・ジョン
3,890,933 views ・ 2016-11-28
下の英語字幕をダブルクリックすると動画を再生できます。
翻訳: kanna kobayashi
校正: Tomoyuki Suzuki
00:06
You work at the college library.
0
6911
2266
あなたは大学図書館に勤務しています
00:09
You're in the middle of a quiet afternoon
1
9177
2220
静かなある日の午後
00:11
when suddenly a shipment of 1,280
different books arrives.
2
11397
6614
突然1,280冊の書籍が入荷してきました
00:18
The books have been dropped of
in one long straight line,
3
18011
3679
書籍は長い1列に並んでいますが
00:21
but they're all out of order,
4
21690
1598
順番はバラバラです
00:23
and the automatic sorting
system is broken.
5
23288
3743
あいにく 書籍整理自動システムは
ダウンしています
00:27
To make matters worse,
classes start tomorrow,
6
27031
2636
さらに厄介なことに
明日から授業が開講します
00:29
which means that
first thing in the morning,
7
29667
2338
つまり 明日朝一番に
00:32
students will show up in droves
looking for these books.
8
32005
4552
学生たちがこれらの本を求めて
どっとやってくるのです
00:36
How can you get them all sorted in time?
9
36557
2936
それまでに本を アルファベット順に並べるには
どうしたらよいでしょう?
00:39
One way would be to start at one end
of the line with the first pair of books.
10
39493
5286
まず 列の片端の2冊から
始める方法があります
00:44
If the first two books are in order,
then leave them as they are.
11
44779
3847
その2冊が正しく並んでいたら
これは そのままにします
00:48
Otherwise, swap them.
12
48626
2294
そうでなければ
この2つを入れ替えます
00:50
Then, look at the second and third books,
13
50920
2296
次に 2冊目と3冊目を比べ
00:53
repeat the process,
14
53216
1663
同じようにします
00:54
and continue until you reach
the end of the line.
15
54879
3056
列の最後までそれを続けます
00:57
At some point, you'll come across
the book that should be last,
16
57935
3250
そのうち一番最後に置くべき本を
手に取ることになるでしょう
01:01
and keep swapping it with every
subsequent book,
17
61185
3525
この本を 後に続く本と
交換していき
01:04
moving it down the line until it
reaches the end where it belongs.
18
64710
4570
この本が収まるべき
列の最後に来るまで作業を続けます
01:09
Then, start from the beginning
and repeat the process
19
69280
2945
次に 最後から2番目の本も
正しい位置に並ぶように
01:12
to get the second to last book
in its proper place,
20
72225
3285
最初から同じ手順を繰り返します
01:15
and keep going until all books are sorted.
21
75510
3311
全部の本が順番に並ぶまでこれを続けます
01:18
This approach is called Bubble Sort.
22
78821
3041
このやり方はバブル・ソートと言います
01:21
It's simple but slow.
23
81862
2294
シンプルですが 時間がかかります
01:24
You'd make 1,279 comparisons
in the first round,
24
84156
5175
第1段階で 1,279回比べなければならず
01:29
then 1,278, and so on,
25
89331
4292
第2段階で1,278回と続き
01:33
adding up to 818,560 comparisons.
26
93623
4919
合計で818,560回 比べることになります
01:38
If each took just one second,
the process would take over nine days.
27
98542
5731
1回1秒としても
9日以上かかる計算になります
01:44
A second strategy would be to start
by sorting just the first two books.
28
104273
4296
2つ目のやり方は
まず最初の2冊を正しく並べます
01:48
Then, take the third book and compare it
with the book in the second spot.
29
108569
5164
そして 3冊目を2冊目の本と比べます
01:53
If it belongs before the second book,
swap them,
30
113733
3440
3冊目が2冊目の本より
順番が先だったら 交換し
01:57
then compare it
with the book in the first spot,
31
117173
2468
さらに 1番目の本と比べ
01:59
and swap again if needed.
32
119641
2041
必要なら 交換します
02:01
Now you've sorted the first three books.
33
121682
2198
これで最初の3冊の順番が整いました
02:03
Keep adding one book at a time
to the sorted sub-line,
34
123880
3852
4冊目以降も 1冊ずつ
この手順で加え続けます
02:07
comparing and swapping the new book
with the one before it
35
127732
4077
新しく加える本を
1つ前の本と 比べて 必要なら交換し
02:11
until it's correctly placed
among the books sorted so far.
36
131809
4195
それまで順番に並べた本の中では
正しい位置にくるように置きます
02:16
This is called Insertion Sort.
37
136004
2209
このやり方は挿入ソートと言います
02:18
Unlike Bubble Sort, it usually doesn't
require comparing every pair of books.
38
138213
4731
バブル・ソートと違って 1冊1冊を
必ずしも他の全てと比べる必要がありません
02:22
On average, we'd expect to only need
to compare each book
39
142944
4010
本1冊につき 比べる相手は
平均で
02:26
to half of the books that came before it.
40
146954
2460
既に整理された本の半数だけです
02:29
In that case, the total
number of comparisons
41
149414
2709
その場合 比較の回数は
02:32
would be 409,280,
42
152123
3860
合計で409,280回です
02:35
taking almost five days.
43
155983
2152
大体5日間かかります
02:38
You're still doing
way too many comparisons.
44
158135
2489
これでも 比較の回数が多過ぎます
02:40
Here's a better idea.
45
160624
1891
実は もっといいやり方があります
02:42
First, pick a random book.
46
162515
2370
まず 本を1冊 適当に選びます
02:44
Call it the partition and compare it
to every other book.
47
164885
4721
その本を「パーティション」と呼び
他の全ての本と比較します
02:49
Then, divide the line
48
169606
1909
列を2つに分けて
02:51
by placing all the books
that come before the partition on its left
49
171515
4151
パーティションの前に来る本を全て左に置き
02:55
and all the ones that come after it
on its right.
50
175666
3159
後に来る本を右に置きます
02:58
You've just saved loads of time
51
178825
1590
これで時間を大幅に節約できます
03:00
by not having to compare
any of the books on the left
52
180415
3430
左に置いた本は右に置いた本と
03:03
to any of the ones
on the right ever again.
53
183845
3400
もう比べなくて済むからです
03:07
Now, looking only
at the books on the left,
54
187245
2420
では 左に置いた本だけを見て
03:09
you can again pick a random partition book
55
189665
2877
もう1冊適当に「パーティション」を選び
03:12
and separate those books that come
before it from those that come after it.
56
192542
4724
パーティションの前に来る本と
後に来る本に分けます
03:17
You can keep creating
sub-partitions like this
57
197266
2470
このようなミニ・パーティションを
作り続けると
03:19
until you have a bunch of small sub-lines,
58
199736
2648
短い列がたくさんできます
03:22
each of which you'd sort quickly using
another strategy, like Insertion Sort.
59
202384
5380
短い列を挿入ソートなどのやり方で
手早く整理します
03:27
Each round of partitioning requires
about 1,280 comparisons.
60
207764
5162
1つのパーティションで
約1,280回の比較をすることになります
03:32
If your partitions are pretty balanced,
61
212926
2540
パーティションの位置が適切なら
03:35
dividing the books into 128 sub-lines of ten
would take about seven rounds,
62
215466
5790
およそ7つの段階で本を
10冊ずつの128列に分けられます
03:41
or 8,960 seconds.
63
221256
2691
時間にして8,960秒です
03:43
Sorting these sub-lines would add
about 22 seconds each.
64
223947
4789
短い列の整理にはさらに22秒ずつかかります
03:48
All in all, this method
known as QuickSort
65
228736
3081
クイック・ソートと呼ばれるこのやり方だと
03:51
could sort the books
in under three and a half hours.
66
231817
3066
3時間半以内にアルファベット順に
本を並べ直せます
03:54
But there's a catch.
67
234883
1114
注意点が1つ
03:55
Your partitions could end up lopsided,
saving no time at all.
68
235997
3578
パーティションの位置が偏っていると
時間は全く節約できません
03:59
Luckily, this rarely happens.
69
239575
1902
幸いそんなことは滅多にありません
04:01
That's why QuickSort is one of the most
efficient strategies
70
241477
3433
こうして クイック・ソートは
一番効率的なやり方の1つとして
04:04
used by programmers today.
71
244910
2006
現在プログラマーに使用されています
04:06
They use it for things like sorting items
in an online store by price,
72
246916
3931
オンラインストアの商品を価格順に並べたり
04:10
or creating a list of all the gas stations
close to a given location
73
250847
4011
ある地点の付近にある
ガソリン・スタンドを近い順に並べたリストを
04:14
sorted by distance.
74
254858
1521
作ったりします
04:16
In your case, you're done quick sorting
with time to spare.
75
256379
4028
本の例に戻ると クイック・ソートなら
余裕で整理できます
04:20
Just another high-stakes day
in the library.
76
260407
2261
危ういところでしたが
図書館ではこんな日も珍しくありません
New videos
このウェブサイトについて
このサイトでは英語学習に役立つYouTube動画を紹介します。世界中の一流講師による英語レッスンを見ることができます。各ビデオのページに表示される英語字幕をダブルクリックすると、そこからビデオを再生することができます。字幕はビデオの再生と同期してスクロールします。ご意見・ご要望がございましたら、こちらのお問い合わせフォームよりご連絡ください。