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

วิธีใดที่จะจัดเรียงหนังสือตามตัวอักษรได้เร็วที่สุด - แชนด์ จอห์น (Chand John)

3,890,933 views

2016-11-28 ・ TED-Ed


New videos

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

วิธีใดที่จะจัดเรียงหนังสือตามตัวอักษรได้เร็วที่สุด - แชนด์ จอห์น (Chand John)

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

TED-Ed


โปรดดับเบิลคลิกที่คำบรรยายภาษาอังกฤษด้านล่างเพื่อเล่นวิดีโอ

Translator: Trinsit Wasinudomrod Reviewer: Kelwalin Dhanasarnsombut
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 วินาที กระบวนการนี้จะใช้เวลาถึงเก้าวัน
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
แต่ละรอบของการแบ่งกั้น ต้องใช้การเทียบ 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
การแบ่งหนังสือเป็นแถว 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
สามารถเรียงลำดับหนังสือ ได้ภายในสามชั่วโมงครึ่ง
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