What's the fastest way to alphabetize your bookshelf? - Chand John

3,890,933 views ・ 2016-11-28

TED-Ed


Моля, кликнете два пъти върху английските субтитри по-долу, за да пуснете видеото.

Translator: Iviana Gicheva Reviewer: Anton Hikov
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
Книгите са сортирани в редица,
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
Един вариант е да започнете от единия край на линията с първата двойка книги.
00:44
If the first two books are in order, then leave them as they are.
11
44779
3847
Ако първите две книги са по азбучен ред, ги оставете както са.
00:48
Otherwise, swap them.
12
48626
2294
Ако ли не, ги разместете.
00:50
Then, look at the second and third books,
13
50920
2296
След това, прегледайте втората и третата двойка,
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
След това, започнете отначало и повторете процеса
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 279 сравнения,
01:29
then 1,278, and so on,
25
89331
4292
след това 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 секунда, процесът ще отнеме над 9 дни.
01:44
A second strategy would be to start by sorting just the first two books.
28
104273
4296
Втора стратегия би била да се започне чрез сортиране само на първите две книги.
01:48
Then, take the third book and compare it with the book in the second spot.
29
108569
5164
След това вземете третата книга и я сравнете с книгата на второто място.
01:53
If it belongs before the second book, swap them,
30
113733
3440
Ако мястото ѝ е преди втората книга, разменете ги,
01:57
then compare it with the book in the first spot,
31
117173
2468
след това я сравнете с книгата на първо място,
01:59
and swap again if needed.
32
119641
2041
и ги разменете отново, ако се налага.
02:01
Now you've sorted the first three books.
33
121682
2198
Сега подредихте първите три книги.
02:03
Keep adding one book at a time to the sorted sub-line,
34
123880
3852
Продължете да добавяте по една книга към вече подредените книги,
02:07
comparing and swapping the new book with the one before it
35
127732
4077
сравнявайки и размяйки новата книга с тази преди нея,
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
За разлика от "Сортиране на балончета", не е нужно да сравнявате всеки чифт книги.
02:22
On average, we'd expect to only need to compare each book
39
142944
4010
Средно, очаква се да е необходимо да сравните всяка книга
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
отнемайки почти пет дни.
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
Първо, изберете книга на случаен принцип.
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
След това, разделете линията
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
можеш да избереш друга разделителна книга
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
Всеки кръг на разделяне изисква около 1280 сравнения.
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
разделяйки книгите на 128 подраздели от по 10, ще ви отнеме около 7 кръга,
или 8960 секунди.
03:41
or 8,960 seconds.
63
221256
2691
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
Но има уловка.
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
Затова "Бързото сортиране" е една от ефективните стратегии,
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
Относно този уебсайт

Този сайт ще ви запознае с видеоклипове в YouTube, които са полезни за изучаване на английски език. Ще видите уроци по английски език, преподавани от първокласни учители от цял свят. Кликнете два пъти върху английските субтитри, показани на всяка страница с видеоклипове, за да възпроизведете видеото оттам. Субтитрите се превъртат в синхрон с възпроизвеждането на видеото. Ако имате някакви коментари или искания, моля, свържете се с нас, като използвате тази форма за контакт.

https://forms.gle/WvT1wiN1qDtmnspy7