1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID ลัน: ทั้งหมดขวา 3 00:00:11,940 --> 00:00:16,470 ดังนั้นนี่คือ CS50 และนี่คือ ตอนนี้จุดเริ่มต้นของสัปดาห์ที่สาม 4 00:00:16,470 --> 00:00:19,960 >> ดังนั้นจนถึงขณะนี้เราได้ รับการเขียนโปรแกรมใน C 5 00:00:19,960 --> 00:00:23,210 ที่มีลักษณะเล็ก ๆ น้อย ๆ สิ่งที่ต้องการที่นี่ 6 00:00:23,210 --> 00:00:25,470 ดังนั้นเราจึงได้มีคู่ของ คมชัดรวมถึงที่ด้านบน 7 00:00:25,470 --> 00:00:28,490 เรามี int, หลักเป็นโมฆะและ แล้วสิ่งที่ต้องทำในตรงกลาง 8 00:00:28,490 --> 00:00:30,590 บิตของโค้ดบางส่วนที่อยู่ภายใน ฟังก์ชั่นที่ 9 00:00:30,590 --> 00:00:34,170 แต่ที่สำคัญได้รับความจริงที่ว่า เราได้รับการบอกว่าที่นี่เป็นโมฆะ 10 00:00:34,170 --> 00:00:39,320 ดังนั้นเป็นโมฆะทั้งหมดเวลานี้ระบุ ว่าโปรแกรมนี้เมื่อทำงาน 11 00:00:39,320 --> 00:00:41,300 สามารถทำงานผ่านชื่อของมัน 12 00:00:41,300 --> 00:00:46,330 คุณไม่สามารถพิมพ์คำอื่น ๆ หรือ ตัวเลขหลังชื่อของโปรแกรมเมื่อ 13 00:00:46,330 --> 00:00:46,830 ใช้มัน 14 00:00:46,830 --> 00:00:51,200 ดังนั้นสำหรับตัวอย่างเช่นถ้าโปรแกรมได้ เรียบเรียงไฟล์ที่เรียกว่าสวัสดี, 15 00:00:51,200 --> 00:00:53,480 คุณสามารถทำ ./hello แต่ที่เป็นมัน 16 00:00:53,480 --> 00:00:56,750 >> วิธีเดียวที่คุณสามารถทำได้ ป้อนอินพุตให้กับโปรแกรมนี้ 17 00:00:56,750 --> 00:00:57,960 คือการเรียกใช้ฟังก์ชัน 18 00:00:57,960 --> 00:00:59,790 ยกตัวอย่างเช่นการทำงานของสิ่งที่ เราได้รับการใช้ป่านนี้ 19 00:00:59,790 --> 00:01:00,950 ที่จะได้รับการป้อนข้อมูลจากผู้ใช้หรือไม่ 20 00:01:00,950 --> 00:01:02,117 >> ผู้ชม: รับสาย 21 00:01:02,117 --> 00:01:04,700 DAVID ลัน: ในการรับสายหรือ ได้รับ int หรือคุณเคยเห็นคนอื่น ๆ 22 00:01:04,700 --> 00:01:07,630 แม้ว่าคุณจะไม่ได้ใช้พวกเขายัง เช่นได้รับยาวนานและไม่ชอบ 23 00:01:07,630 --> 00:01:09,380 แต่คิดว่าเรา จริงต้องการที่จะเริ่มต้น 24 00:01:09,380 --> 00:01:12,760 การเขียนโปรแกรมที่มีเล็ก ๆ น้อย ๆ ที่หลากหลายและตรงไปตรงมาน้อยมาก 25 00:01:12,760 --> 00:01:15,090 เช่นคำสั่งที่คุณได้ รับหวังว่า 26 00:01:15,090 --> 00:01:16,550 นิด ๆ หน่อย ๆ คุ้นเคยกับ 27 00:01:16,550 --> 00:01:18,560 เช่นพื้นที่ซีดี Dropbox 28 00:01:18,560 --> 00:01:20,800 นี้แน่นอนการเปลี่ยนแปลง ไดเรกทอรีสมมติว่าคุณ 29 00:01:20,800 --> 00:01:23,590 คุณอยู่ในบ้านของจอห์นฮาร์วาร์ ไดเรกทอรีไปยังโฟลเดอร์ Dropbox ของคุณ 30 00:01:23,590 --> 00:01:27,380 ในขณะที่คำสั่งเช่นนี้ สร้างไดเรกทอรีใหม่ที่เรียกว่า pset2, 31 00:01:27,380 --> 00:01:30,290 ที่คุณอาจมีอยู่แล้วหรือ จะเร็ว ๆ นี้สำหรับปัญหาตั้งสอง 32 00:01:30,290 --> 00:01:33,970 ทำให้สวัสดีแน่นอนคือคำสั่ง ที่สร้างโปรแกรมที่เรียกว่าสวัสดี 33 00:01:33,970 --> 00:01:35,770 จากไฟล์ที่เรียกว่าสวัสดีดอทค 34 00:01:35,770 --> 00:01:39,140 และในแต่ละเหล่านี้ กรณีที่ตอนนี้เราได้มี 35 00:01:39,140 --> 00:01:43,620 ให้เหตุผลในการที่เรียกว่า บรรทัดคำสั่งให้กระพริบ 36 00:01:43,620 --> 00:01:48,540 เพื่อให้รู้ว่าสิ่งที่จะสร้างและอื่น ๆ mkdir ที่รู้ว่าสิ่งที่โฟลเดอร์เพื่อสร้าง 37 00:01:48,540 --> 00:01:51,110 และเพื่อให้แผ่นซีดีที่รู้ ที่คุณต้องการไป 38 00:01:51,110 --> 00:01:54,720 แต่จนถึงขณะนี้เราให้บอกว่า หลักฟังก์ชั่นเริ่มต้นที่ของคุณ 39 00:01:54,720 --> 00:01:58,500 มีการแสดงออกเป็นโมฆะ ภายในวงเล็บเหล่านั้น 40 00:01:58,500 --> 00:02:01,250 ซึ่งหมายถึงว่า ไม่สามารถใช้ข้อโต้แย้งใด ๆ 41 00:02:01,250 --> 00:02:03,240 >> ดังนั้นการเริ่มต้นวันนี้ สิ่งที่เรากำลังจะทำ 42 00:02:03,240 --> 00:02:06,270 คือเรากำลังจะเริ่มต้น สนับสนุนสิ่งนี้แม้ 43 00:02:06,270 --> 00:02:08,990 ในความเป็นจริงในกรณีนี้ที่คุณ ไม่ปกติพิมพ์ด้วยตนเอง 44 00:02:08,990 --> 00:02:11,130 ทำให้ได้รับการทำเช่นนี้ สำหรับเรามีไม่ 45 00:02:11,130 --> 00:02:15,840 แต่หนึ่งสองสามเพิ่มเติม สตริงหลังจากที่โปรแกรมชื่อ 46 00:02:15,840 --> 00:02:16,850 เสียงดังกราว 47 00:02:16,850 --> 00:02:18,240 ดังนั้นเราจะบรรลุนี้ 48 00:02:18,240 --> 00:02:20,260 >> ดีเริ่มต้นวันนี้ ในกรณีที่เราต้องการ 49 00:02:20,260 --> 00:02:22,855 เพื่อให้การป้อนข้อมูลผ่านทาง ที่เรียกว่าบรรทัดคำสั่ง 50 00:02:22,855 --> 00:02:24,980 เรากำลังจะเริ่มต้นการเพิ่ม ที่นี่สิ่งที่อยู่ในสีเหลือง 51 00:02:24,980 --> 00:02:30,520 เปลี่ยนเป็นโมฆะด้วย int argc จุลภาค สตริง argv วงเล็บเปิดตัวใกล้ 52 00:02:30,520 --> 00:02:32,520 ขณะนี้เป็นที่น่าสนใจ สำหรับคู่ของเหตุผล 53 00:02:32,520 --> 00:02:35,690 หนึ่งมันจะให้เราเขียน โปรแกรมที่มีเล็ก ๆ น้อย ๆ แบบไดนามิกมากขึ้น 54 00:02:35,690 --> 00:02:37,570 แต่ยิ่งไปร้องขอ, ก็จะเปิดขึ้น 55 00:02:37,570 --> 00:02:40,340 ขณะนี้การสนทนาเป็นไปได้ สิ่งที่อาร์เรย์สามารถจริงๆ 56 00:02:40,340 --> 00:02:43,300 ถูกนำมาใช้สำหรับสตริงสิ่งที่ จริงๆอยู่ภายใต้กระโปรงหน้ารถ 57 00:02:43,300 --> 00:02:47,320 จนกว่าจะถึงสัปดาห์ถัดไปเมื่อเราเริ่มต้นการดำน้ำ แม้ลึกเป็นวิธีเครื่องเป็น 58 00:02:47,320 --> 00:02:48,590 ทำให้ทุกการทำงานของสิ่งนี้ 59 00:02:48,590 --> 00:02:51,920 แต่ตอนนี้ขอวาด บางทีภาพ 60 00:02:51,920 --> 00:02:54,950 >> เมื่อคุณเขียนโปรแกรม กับหลักประกาศ 61 00:02:54,950 --> 00:02:58,810 ในทางนี้เช่นที่หลัก ใช้เวลาสองขัดแย้ง int 62 00:02:58,810 --> 00:03:03,233 and-- สิ่งที่ชนิดของข้อมูล เป็นอาร์กิวเมนต์ที่สอง? 63 00:03:03,233 --> 00:03:04,529 >> ผู้ชม: อาร์เรย์ 64 00:03:04,529 --> 00:03:05,320 DAVID ลัน: อาร์เรย์ 65 00:03:05,320 --> 00:03:09,170 เพื่อให้ดูเหมือนได้อย่างรวดเร็วก่อนเช่นนั้น สตริง แต่สังเกตวงเล็บ 66 00:03:09,170 --> 00:03:12,760 จำครั้งสุดท้ายที่เราแนะนำ ความคิดของอาเรย์ 67 00:03:12,760 --> 00:03:16,210 และใช้อาร์เรย์วงเล็บ ในสองสามบริบท 68 00:03:16,210 --> 00:03:19,160 คุณอาจใช้ตาราง วงเล็บที่จะไปลงในอาร์เรย์ 69 00:03:19,160 --> 00:03:22,710 และได้รับธาตุโดยเฉพาะอย่างยิ่งเช่น วงเล็บ 0 หรือ 1 หรือวงเล็บวงเล็บ 2 70 00:03:22,710 --> 00:03:25,500 แต่ที่เราเห็นถ้าสั้น ๆ เมื่อสัปดาห์ที่แล้วว่าคุณยัง 71 00:03:25,500 --> 00:03:28,790 ใช้วงเล็บเหล่านี้ไป ประกาศขนาดของอาร์เรย์ 72 00:03:28,790 --> 00:03:31,790 ถ้าคุณรู้ล่วงหน้าว่าหลาย ints หรือว่าหลายสตริงหรือสิ่งที่คุณ 73 00:03:31,790 --> 00:03:32,630 จริงต้องการ 74 00:03:32,630 --> 00:03:34,790 ดังนั้นมันจะเปิดออกมีของ บริบทที่สามที่นี่ 75 00:03:34,790 --> 00:03:37,890 ที่มีจำนวนไม่ภายใน ของวงเล็บ 76 00:03:37,890 --> 00:03:41,920 เมื่อคุณระบุเป็นฉันมีที่นี่ ชื่อของสิ่งที่ต้องการ argv, 77 00:03:41,920 --> 00:03:44,550 ซึ่งเป็นเพียงวิธีแฟนซีของ บอกว่าเวกเตอร์อาร์กิวเมนต์ซึ่ง 78 00:03:44,550 --> 00:03:47,750 เป็นอีกวิธีที่จินตนาการของ บอกอาร์เรย์ของข้อโต้แย้ง, 79 00:03:47,750 --> 00:03:50,870 วงเล็บเปิดวงเล็บใกล้เพียง หมายความว่าคุณไม่จำเป็นต้อง 80 00:03:50,870 --> 00:03:52,960 รู้ล่วงหน้าว่าใหญ่ อาร์เรย์เป็นไปได้ 81 00:03:52,960 --> 00:03:55,070 แต่คุณรู้ว่ามันจะเป็นอาร์เรย์ 82 00:03:55,070 --> 00:03:57,320 ดังนั้นหากคุณไม่ทราบว่า จำนวนไม่วางไว้ในที่นั่น 83 00:03:57,320 --> 00:04:01,160 สำหรับวงเล็บเปิดตัวใกล้ หมายความว่า argv ไม่สตริง 84 00:04:01,160 --> 00:04:03,124 แต่อาร์เรย์ของสตริง 85 00:04:03,124 --> 00:04:05,040 ดังนั้น syntactically ถ้าคุณ คิดว่ากลับเมื่อสัปดาห์ที่แล้ว 86 00:04:05,040 --> 00:04:09,460 มันเป็นเรื่องที่คล้ายกันมากที่จะบอกว่า สิ่งที่ต้องการ int วัยวงเล็บเปิด 87 00:04:09,460 --> 00:04:10,984 และแล้วสิ่งนั้นไม่นาน 88 00:04:10,984 --> 00:04:12,150 ดังนั้นสิ่งที่จะมีลักษณะเช่นนี้? 89 00:04:12,150 --> 00:04:13,399 ลองวาดภาพ 90 00:04:13,399 --> 00:04:18,756 ดังนั้นเมื่อคุณเรียกใช้โปรแกรมนี้กับหลัก มีสองข้อโต้แย้งที่กำหนดไว้ภายใน 91 00:04:18,756 --> 00:04:21,339 วงเล็บที่คุณ เป็นหลักมีอย่างน้อยสองชิ้น 92 00:04:21,339 --> 00:04:23,560 ของหน่วยความจำส่งให้คุณ ภายใต้เครื่องดูดควัน 93 00:04:23,560 --> 00:04:26,550 หนึ่งที่ผมจะวาดเป็นรูปสี่เหลี่ยมผืนผ้านี้ เป็นไปได้ที่เรียกว่า argc 94 00:04:26,550 --> 00:04:30,645 และเช่นเดียวกับปะยางรวดเร็ว สิ่งที่เป็นชนิดข้อมูลของ argc? 95 00:04:30,645 --> 00:04:31,270 ดังนั้นจึงเป็น int 96 00:04:31,270 --> 00:04:33,480 ดังนั้นจำนวนที่เกิดขึ้น ที่จะไปในรอบ argc-- 97 00:04:33,480 --> 00:04:35,660 ออกที่ยืนสำหรับการนับอาร์กิวเมนต์ 98 00:04:35,660 --> 00:04:38,887 ในขณะที่ฉันได้วาด argv เป็นอาร์เรย์ 99 00:04:38,887 --> 00:04:40,970 และผมไม่ทราบจริงๆ นานแค่ไหนที่มันจะเป็นไปได้ 100 00:04:40,970 --> 00:04:42,470 ดังนั้นจุดประสงค์ของว​​ันนี้ dot dot dot 101 00:04:42,470 --> 00:04:43,636 มันอาจจะได้รับบางส่วนของความยาว 102 00:04:43,636 --> 00:04:45,640 แต่ฉันได้ภาพที่นี่ อย่างน้อยสี่สี่เหลี่ยม 103 00:04:45,640 --> 00:04:50,970 ดังนั้น argv ก้อนของหน่วยความจำที่เก็บ สตริงสตริง dot dot dot, 104 00:04:50,970 --> 00:04:53,950 และ argc เป็นเพียงหนึ่งก้อน ของหน่วยความจำสำหรับจำนวนเต็ม 105 00:04:53,950 --> 00:04:55,710 >> ดังนั้นตอนนี้ขอให้เป็นคนเล็ก ๆ น้อย ๆ ที่แม่นยำยิ่งขึ้น 106 00:04:55,710 --> 00:04:59,200 หากเมื่อฉันมีสตริง ในอาร์เรย์นี้เรียกว่า 107 00:04:59,200 --> 00:05:03,290 argv ฉันต้องการที่จะได้รับไปที่พวกเขา บุคคลเช่นเดียวกับสัปดาห์ที่แล้ว 108 00:05:03,290 --> 00:05:05,670 เรากำลังจะใช้สัญกรณ์ เช่น argv วงเล็บ 0 109 00:05:05,670 --> 00:05:07,650 ที่จะได้รับสิ่งแรกที่อาเรย์ 110 00:05:07,650 --> 00:05:10,440 argv วงเล็บ 1 ที่จะได้รับ สิ่งที่สองและอื่น ๆ 111 00:05:10,440 --> 00:05:14,597 ที่สำคัญที่นี่เป็นที่เรายังคง 0 indexed-- เราก็ยังคงนับตั้งแต่ 0 112 00:05:14,597 --> 00:05:16,430 ดังนั้นตอนนี้ขอจริง นำสิ่งที่อยู่ในนี้ 113 00:05:16,430 --> 00:05:21,670 ถ้าฉันจะรวบรวมโปรแกรมที่เรียกว่า สวัสดีจากไฟล์ที่เรียกว่าสวัสดีดอทค, 114 00:05:21,670 --> 00:05:24,340 แล้วก็เรียกใช้โปรแกรมที่ ด้วยจุดเฉือนสวัสดี 115 00:05:24,340 --> 00:05:28,380 สิ่งที่ไม่คอมพิวเตอร์แล็ปท็อปของฉัน ลักษณะเหมือนอยู่ใต้ฝากระโปรง 116 00:05:28,380 --> 00:05:31,300 ช่วงเวลาที่ผมทำงานจุด เฉือนทักทายและกด Enter? 117 00:05:31,300 --> 00:05:33,500 อย่างนี้อาจจะเป็น สิ่งที่เราสามารถอธิบาย 118 00:05:33,500 --> 00:05:37,010 เป็นเนื้อหาของคอมพิวเตอร์ของคุณ หน่วยความจำหรือหน่วยความจำเข้าถึงโดยสุ่ม RAM-- 119 00:05:37,010 --> 00:05:40,330 ในคำอื่น ๆ คอมพิวเตอร์ อย่างใดสำหรับคุณอย่างน่าอัศจรรย์, 120 00:05:40,330 --> 00:05:45,360 ทำให้หมายเลข 1 ใน argc อาคา argcount, และมันทำให้ตัวอักษรสตริง 121 00:05:45,360 --> 00:05:48,200 ./hello ใน argv วงเล็บ 0 122 00:05:48,200 --> 00:05:51,750 ฉันมีความคิดตรงไปตรงมาในสิ่งที่เป็น ในวงเล็บ argv 1 หรือ 2 หรือ 3 123 00:05:51,750 --> 00:05:55,550 เพราะถ้าผู้ใช้ไม่ได้ พิมพ์สิ่งที่นอกเหนือจาก ./hello, 124 00:05:55,550 --> 00:05:58,550 เราจะคิดว่าสิ่งเหล่านี้ เป็นค่าขยะได้มากที่สุด 125 00:05:58,550 --> 00:05:59,700 เพื่อที่จะพูด 126 00:05:59,700 --> 00:06:02,650 ชิ้นที่ของหน่วยความจำ อยู่ แต่ก็ไม่ได้ขึ้นอยู่กับเรา 127 00:06:02,650 --> 00:06:05,710 จะมองไปที่พวกเขาเพราะ argcount เป็นเพียงหนึ่ง 128 00:06:05,710 --> 00:06:07,870 >> ตอนนี้ในขณะเดียวกันถ้าฉัน เขียนใช้โปรแกรมอื่น 129 00:06:07,870 --> 00:06:12,250 cd ซึ่งเป็นมากขึ้นอย่างถูกต้องคำสั่ง ในพื้นที่ซีดีของคุณกระพริบ prompt-- 130 00:06:12,250 --> 00:06:17,200 Dropbox-- เมื่อฉันทำงานที่มีประสิทธิภาพ เมื่อโปรแกรม cd มีการเรียกใช้ argc, 131 00:06:17,200 --> 00:06:22,270 ภายในของหน่วยความจำคอมพิวเตอร์ของฉันคือ briefest ที่สุดที่สองหมายเลข 2 132 00:06:22,270 --> 00:06:25,936 แล้ว o วงเล็บ argv มี cd, argv วงเล็บที่ 1 มี Dropbox, 133 00:06:25,936 --> 00:06:28,560 และแล้วแน่นอนคำสั่ง เสร็จสมบูรณ์เพื่อให้ทุกหน่วยความจำนี้ 134 00:06:28,560 --> 00:06:30,420 เป็นหลักจะหายไปและ ถูกนำมาใช้อย่างอื่น 135 00:06:30,420 --> 00:06:32,270 และนั่นเป็นเหตุผลที่ผมบอกว่า เพียงแค่เสี้ยววินาที 136 00:06:32,270 --> 00:06:35,720 >> ในขณะเดียวกันถ้าเราทำ mkdir pset2, ภาพที่มีลักษณะเกือบจะเหมือนกัน 137 00:06:35,720 --> 00:06:37,900 แต่ด้วยเงื่อนไขที่แตกต่างกันภายใน argv 138 00:06:37,900 --> 00:06:42,570 ถ้าผมทำเสียงดังกราวรีบทักทาย สวัสดีดอทค, ความคิดเดียวกัน 139 00:06:42,570 --> 00:06:47,060 สิ่งอื่น ๆ ที่เต็มไปใน argv และ argc แน่นอนคือ 4 140 00:06:47,060 --> 00:06:49,150 ดังนั้นในคำอื่น ๆ แม้ว่าแถวนี้ 141 00:06:49,150 --> 00:06:52,950 อาจจะมีการ dot dot dot ของบาง ความยาวตัวแปรจึงจะพูด 142 00:06:52,950 --> 00:06:56,720 คุณมักจะรู้ว่าที่สิ้นสุดของมัน เป็นเพราะ argc จะบอกคุณ 143 00:06:56,720 --> 00:07:00,120 สิ่งที่จุดที่คุณต้องหยุด มองไปที่องค์ประกอบใน argv 144 00:07:00,120 --> 00:07:03,660 คุณสามารถมองไปที่สี่ ทั้งหมดในกรณีนี้ 145 00:07:03,660 --> 00:07:06,600 >> ดังนั้นตอนนี้ขอใช้เวลาดู, บางทีโปรแกรมที่ง่าย 146 00:07:06,600 --> 00:07:09,070 ที่เพิ่งกล่าวว่าสวัสดี กับใครบางคนเช่น Zamyla 147 00:07:09,070 --> 00:07:12,620 ดังนั้นผมจึงเรียกร้องฉันจะเขียนโปรแกรม ในเวลาเพียงชั่วครู่หนึ่งผ่านทางที่ฉันจะทำ 148 00:07:12,620 --> 00:07:16,670 ./hello พื้นที่ Zamyla และจากนั้นฉันต้องการ โปรแกรมของฉันที่จะพิมพ์ออกมาบางสิ่งบางอย่าง 149 00:07:16,670 --> 00:07:18,520 ซุปเปอร์ง่ายๆเช่น "สวัสดี, Zamyla". 150 00:07:18,520 --> 00:07:20,100 GetString ขณะนี้ในอดีตที่ผ่านมาเราได้ใช้ 151 00:07:20,100 --> 00:07:22,850 ดังนั้นในอดีตที่ผ่านมาแม้ว่า คุณไม่คุ้นเคยกับการเขียนโปรแกรม 152 00:07:22,850 --> 00:07:27,180 ราคาที่คุณสามารถชักขึ้น โปรแกรมที่ใช้ GetString 153 00:07:27,180 --> 00:07:29,390 แล้วใช้ printf จะกล่าวทักทายกับ Zamyla 154 00:07:29,390 --> 00:07:31,290 แต่ขอไม่ใช้ GetString เวลานี้ 155 00:07:31,290 --> 00:07:37,510 ให้ฉันแทนเข้าไป Appliant และทำรวมถึงมาตรฐานผม O จุดชั่วโมง 156 00:07:37,510 --> 00:07:41,160 ให้ฉันยังรวมถึง CS50 จุดชั่วโมง 157 00:07:41,160 --> 00:07:44,730 ตอนนี้ int หลักและตอนนี้ฉัน จะไม่ทำวันนี้เป็นโมฆะ 158 00:07:44,730 --> 00:07:51,200 แต่ฉันจะทำ int argc สตริง argv วงเล็บเปิดวงเล็บปิด 159 00:07:51,200 --> 00:07:52,640 ไม่ระบุจำนวน 160 00:07:52,640 --> 00:07:54,644 และตอนนี้ที่นี่เป็นของฉันเรียกว่าจะทำอย่างไร 161 00:07:54,644 --> 00:07:57,560 สิ่งที่ฉันจะทำตอนนี้คือผม จะทำบิตของการก้าวกระโดดของความเชื่อที่ 162 00:07:57,560 --> 00:08:00,560 ฉันจะคิดว่าผู้ใช้ จะใช้โปรแกรมนี้อย่างถูกต้อง 163 00:08:00,560 --> 00:08:04,980 และฉันก็จะไป ทำ printf สวัสดี% SN 164 00:08:04,980 --> 00:08:06,630 ดังนั้นไม่มีอะไรใหม่มี 165 00:08:06,630 --> 00:08:11,470 แต่ผมต้องการที่จะใส่ตอนนี้สิ่งที่คำว่า ประเภทของผู้ใช้ตามชื่อของโปรแกรม 166 00:08:11,470 --> 00:08:16,970 ดังนั้นถ้าผมทำพื้นที่ ./hello Zamyla ผม ต้องการเข้าถึงอย่างใดโปรแกรม 167 00:08:16,970 --> 00:08:20,870 อ้าง unquote "Zamyla". ดังนั้นฉัน สามารถไปลงในเวกเตอร์อาร์กิวเมนต์ของฉัน 168 00:08:20,870 --> 00:08:25,980 อาร์เรย์ของสตริงและถ้าคำสั่ง อีกครั้งเป็นพื้นที่ ./hello Zamyla, 169 00:08:25,980 --> 00:08:29,340 สิ่งที่จำนวนฉันต้องการ ใส่ใน argv ที่นี่? 170 00:08:29,340 --> 00:08:29,840 ผู้ชม: 1 171 00:08:29,840 --> 00:08:32,355 DAVID ลัน: 1 เนื่องจาก วงเล็บ 0 เปิดออก 172 00:08:32,355 --> 00:08:34,230 เป็นไปได้ ชื่อของโปรแกรมที่เราเห็น 173 00:08:34,230 --> 00:08:37,789 ดังนั้นตัวที่ 1 เป็นคำแรก ผมว่าผู้ใช้พิมพ์ 174 00:08:37,789 --> 00:08:39,559 ฉันจะไปข้างหน้าและบันทึกนี้ 175 00:08:39,559 --> 00:08:42,830 ฉันจะไปลงในโฟลเดอร์ของฉัน ที่ฉันได้วางไฟล์นี้ 176 00:08:42,830 --> 00:08:44,920 ฉันจะไม่ทำให้สวัสดี 3 177 00:08:44,920 --> 00:08:46,230 comp IO ของตกลง 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla ใส่ 179 00:08:51,380 --> 00:08:54,480 ผมทำอะไรผิดหรือเปล่า? 180 00:08:54,480 --> 00:08:57,270 ผมถูกจับด้วยความประหลาดใจ ตัวเองเพียงแค่ช่วงเวลาที่มี 181 00:08:57,270 --> 00:08:58,230 ผมทำอะไรผิดหรือเปล่า? 182 00:08:58,230 --> 00:08:59,220 >> ผู้ชม: ชื่อ 183 00:08:59,220 --> 00:09:01,767 >> DAVID ลัน: ไฟล์ของ เรียกว่าจริง hello3.c 184 00:09:01,767 --> 00:09:03,850 และผมว่าเพียง มั่นคงเพราะเราได้ 185 00:09:03,850 --> 00:09:06,550 มีของ hello.c ใน ที่ผ่านมาในรหัสออนไลน์ 186 00:09:06,550 --> 00:09:11,550 จึงขอแก้ไข ./hello นี้ วงเล็บรีบ 3 Zamyla 187 00:09:11,550 --> 00:09:12,370 ใส่ 188 00:09:12,370 --> 00:09:14,030 และตอนนี้เรามีสวัสดี Zamyla 189 00:09:14,030 --> 00:09:17,650 ในขณะที่ฉันสามารถเปลี่ยนนี้เพื่อ เป็นร็อบหรือจริงๆคำอื่น ๆ 190 00:09:17,650 --> 00:09:19,230 >> แต่ขอให้พิจารณากรณีที่มุม 191 00:09:19,230 --> 00:09:24,360 สิ่งที่คุณอาจคาดหวังจะเกิดขึ้นถ้า ผมไม่ได้พิมพ์ชื่อทุกคนที่ทั้งหมดหรือไม่ 192 00:09:24,360 --> 00:09:25,270 >> ผู้ชม: ข้อผิดพลาด 193 00:09:25,270 --> 00:09:27,300 >> DAVID ลัน: ข้อผิดพลาด ของการจัดเรียงบางอย่างอาจจะเป็น 194 00:09:27,300 --> 00:09:28,200 ลองมาดูกัน 195 00:09:28,200 --> 00:09:29,440 ใส่ 196 00:09:29,440 --> 00:09:30,210 Null 197 00:09:30,210 --> 00:09:33,870 ดังนั้น printf เป็นจริงเป็น เล็ก ๆ น้อย ๆ ในการป้องกันของเรา 198 00:09:33,870 --> 00:09:38,131 ที่นี่และตัวอักษรพิมพ์วงเล็บปิดเปิด null แต่สิ่งที่เลวร้ายสามารถเกิดขึ้นได้ 199 00:09:38,131 --> 00:09:40,130 และเพียงเพื่อแสดงให้เห็นถึง สิ่งที่คุณอย่างแน่นอน 200 00:09:40,130 --> 00:09:42,800 ไม่ควรจะทำอย่างไรให้เป็นไปใน ที่นี่และเริ่ม poking รอบ 201 00:09:42,800 --> 00:09:43,300 ใช่มั้ย? 202 00:09:43,300 --> 00:09:46,410 ถ้าฉันรู้ว่าภาพใน หน่วยความจำเป็นหลักนี้ 203 00:09:46,410 --> 00:09:52,660 argv วงเล็บที่ 1 มี Zamyla, argv วงเล็บ 0 มี ./hello หรือ ./hello-3 204 00:09:52,660 --> 00:09:55,400 สิ่งที่อยู่ในวงเล็บ 2 หรือไม่? 205 00:09:55,400 --> 00:09:58,210 เพื่อให้สามารถตอบว่า ถามตัวเองใช่มั้ย? 206 00:09:58,210 --> 00:10:00,460 ฉันสามารถเปลี่ยน 1 ถึง 2 207 00:10:00,460 --> 00:10:07,270 ตอนนี้ผมสามารถคอมไพล์สวัสดี 3 ./hello3 ขอขยายและกด Enter 208 00:10:07,270 --> 00:10:08,270 ขออภัย 209 00:10:08,270 --> 00:10:10,660 ไม่มีเครื่องหมายคำพูด 210 00:10:10,660 --> 00:10:12,540 ที่น่าสนใจ 211 00:10:12,540 --> 00:10:15,530 เพื่อให้เป็นชนิดของเย็น เห็นสิ่งอื่นที่อยู่ในที่นี่ 212 00:10:15,530 --> 00:10:17,130 >> ดังนั้นอะไรที่อยู่ภายในแล็ปท็อปของฉันได้อย่างไร 213 00:10:17,130 --> 00:10:20,390 ขอบันทึกด้วยวงเล็บ 3 214 00:10:20,390 --> 00:10:25,190 ทำให้ hello3, ./hello-3 215 00:10:25,190 --> 00:10:26,500 อยากรู้อยากเห็น 216 00:10:26,500 --> 00:10:30,560 และตอนนี้ให้ของได้รับจริงๆ bold-- 50 217 00:10:30,560 --> 00:10:34,340 นั่นคือการดำน้ำลึกจริงๆ ในหน่วยความจำของคอมพิวเตอร์ของฉัน 218 00:10:34,340 --> 00:10:35,930 50 ดัชนีใน 219 00:10:35,930 --> 00:10:41,950 เพื่อให้สวัสดี 3 ./hello-3 220 00:10:41,950 --> 00:10:42,680 อยากรู้อยากเห็น 221 00:10:42,680 --> 00:10:44,660 สิทธิทั้งหมดตอนนี้ฉันเพียงแค่ จะได้รับรถโดยประมาท 222 00:10:44,660 --> 00:10:47,331 ลองไป 5,000 223 00:10:47,331 --> 00:10:47,830 ขวาทั้งหมด 224 00:10:47,830 --> 00:10:49,520 เพื่อให้ฉันคอมไพล์ 225 00:10:49,520 --> 00:10:51,460 ทำให้ hello3, ./hello-3 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 ตกลง 228 00:10:56,460 --> 00:10:59,250 ตอนนี้บางท่านอาจจะมี นำหลอดไฟออกไป 229 00:10:59,250 --> 00:11:01,900 มีกี่คนที่มี เห็นข้อความนี้มาก่อนหรือไม่ 230 00:11:01,900 --> 00:11:03,440 ตกลง 231 00:11:03,440 --> 00:11:04,420 ดังนั้นทำไม? 232 00:11:04,420 --> 00:11:07,250 >> ราคาต่อรอง are-- และมีที่แตกต่างกัน สิ่งที่สามารถก่อให้เกิดนี้ 233 00:11:07,250 --> 00:11:09,730 และเห็นได้ชัดว่าคุณอยู่ในที่ดี company-- เราได้อย่างชัดเจน 234 00:11:09,730 --> 00:11:11,900 ทำให้เกิดสิ่งที่เรียกว่า ความผิดส่วน 235 00:11:11,900 --> 00:11:15,890 และเรื่องยาวสั้นสำหรับวันนี้ผม ได้สัมผัสส่วนของหน่วยความจำ 236 00:11:15,890 --> 00:11:17,060 ที่ฉันไม่ควรจะมี 237 00:11:17,060 --> 00:11:19,970 ส่วนที่เพียงแค่หมายความว่าก้อน หน่วยความจำที่ฉันไม่ควรจะมี 238 00:11:19,970 --> 00:11:25,530 ตอนนี้เครื่องคอมพิวเตอร์รับประกันว่าถ้าผม ทำงาน ./helloZamyla ที่ฉันสามารถสัมผัส argv 239 00:11:25,530 --> 00:11:27,760 เป็นวงเล็บ 0 และ argv วงเล็บ 1 240 00:11:27,760 --> 00:11:32,730 แต่ argc เป็นค่า 2 นั่นหมายความว่าผม เพียง allowed-- มันเรียงลำดับของการให้เกียรติ 241 00:11:32,730 --> 00:11:35,180 system-- ที่จะสัมผัส วงเล็บ 0 และ 1 วงเล็บ 242 00:11:35,180 --> 00:11:37,990 ถ้าฉันไปที่ไกลออกไปม​​ี อย่างที่จะเป็นหน่วยความจำที่มี 243 00:11:37,990 --> 00:11:40,660 RAM ของฉันที่มีอยู่ในร่างกาย ในเครื่องคอมพิวเตอร์ 244 00:11:40,660 --> 00:11:42,080 แต่ใครจะรู้ว่ามีอะไรบ้าง? 245 00:11:42,080 --> 00:11:44,450 อันที่จริงผมทำงานหลาย โปรแกรมในเวลาหนึ่ง 246 00:11:44,450 --> 00:11:46,910 ผมอาจจะมี seen-- ถ้าฉันไม่ได้ การทำเช่นนี้ใน Appliant 247 00:11:46,910 --> 00:11:49,937 แต่บน Mac หรือ PC-- ของฉันฉันอาจจะมี เห็นเนื้อหาของอีเมล 248 00:11:49,937 --> 00:11:52,270 ฉันอาจจะได้เห็นทันที ข้อความที่ผมส่งไปเมื่อเร็ว ๆ นี้ 249 00:11:52,270 --> 00:11:55,390 สิ่งที่อาจจะมี อ้อยอิ่งรอบในหน่วยความจำ 250 00:11:55,390 --> 00:11:59,180 จะได้รับการเข้าถึงได้โดยวิธีการ สัญกรณ์นี้วงเล็บพลตาราง 251 00:11:59,180 --> 00:12:02,850 หรือแย่ลงยังคุณอาจมี พบว่าหนึ่งในรหัสผ่านของฉัน 252 00:12:02,850 --> 00:12:05,859 ที่ฉันเพิ่งจะพิมพ์ไว้ในที่ โปรแกรมได้ถูกเก็บไว้ในหน่วยความจำเพื่อให้เป็น 253 00:12:05,859 --> 00:12:07,900 ในการตรวจสอบฉันและ จากนั้นเพียงแค่ชนิดของทิ้งมันไว้ 254 00:12:07,900 --> 00:12:09,910 ในแรมจนกว่าฉันจะออกจากโปรแกรมที่ 255 00:12:09,910 --> 00:12:12,860 >> และแน่นอนนี่คือหนึ่งใน อันตรายและเป็นหนึ่งในอำนาจ 256 00:12:12,860 --> 00:12:15,980 ของการใช้ภาษาเช่นซี คุณมีการเข้าถึงอิสระ 257 00:12:15,980 --> 00:12:18,860 กับเนื้อหาทั้งหมด ของหน่วยความจำของโปรแกรมที่ 258 00:12:18,860 --> 00:12:21,340 และสิ่งที่คนเลวได้ แม้ทำใน cases-- ที่ 259 00:12:21,340 --> 00:12:23,807 โดยเฉพาะอย่างยิ่งเมื่อเรา จะได้รับการเขียนโปรแกรมเว็บ 260 00:12:23,807 --> 00:12:26,890 ในช่วงท้ายของภาคการศึกษาที่เราจะ ทบทวน topic-- นี้จะกระตุ้นรอบ 261 00:12:26,890 --> 00:12:31,660 อาจเป็นคนของคอมพิวเตอร์ หน่วยความจำและหาสิ่งที่อยากรู้อยากเห็นดังกล่าว 262 00:12:31,660 --> 00:12:32,570 อย่างที่เราเห็นมี 263 00:12:32,570 --> 00:12:36,900 หรือแม้แต่เลวยังรหัสผ่านที่เขา หรือเธอก็จะสามารถใช้ในการทำสิ่งที่ไม่ดี 264 00:12:36,900 --> 00:12:40,240 >> เพื่อให้ชัดเจนผมไม่ควรได้กระทำนี้ เพราะสิ่งที่แปลกเริ่มเกิดขึ้น 265 00:12:40,240 --> 00:12:42,310 แท้จริงนี้เป็นโปรแกรม crashing 266 00:12:42,310 --> 00:12:44,580 นี้จะเทียบเท่า ของ Mac OS หรือใน Windows 267 00:12:44,580 --> 00:12:46,770 หน้าต่างโปรแกรมเพียงแค่หายไป 268 00:12:46,770 --> 00:12:48,300 ข้อผิดพลาดที่ไม่คาดคิดเกิดขึ้น 269 00:12:48,300 --> 00:12:50,840 ในสภาพแวดล้อมที่บรรทัดคำสั่ง เราเห็นอะไรเช่นนี้ 270 00:12:50,840 --> 00:12:54,480 แต่ที่ว่าทำไมเป็นฉันเพียงแค่สัมผัส หน่วยความจำที่ไม่ได้อยู่กับผม 271 00:12:54,480 --> 00:12:57,090 >> จึงขอป้องกันนี้ นิด ๆ หน่อย ๆ ในทางที่แตกต่างกัน 272 00:12:57,090 --> 00:12:59,010 โดยดูที่โปรแกรมนี้ที่นี่ 273 00:12:59,010 --> 00:13:01,000 ดังนั้นอีกครั้งโครงกระดูก ที่เราเห็น earlier-- 274 00:13:01,000 --> 00:13:02,480 และฉันได้เน้นครั้งนี้ int 275 00:13:02,480 --> 00:13:05,900 และทุกเวลานี้หลักมี แน่นอนกลับค่า 276 00:13:05,900 --> 00:13:09,120 แม้ว่าในส่วนของการบรรยายของเรา ตัวอย่างที่เราไม่เคยใช้ครั้งเดียว 277 00:13:09,120 --> 00:13:10,990 กลับอะไรในหลัก 278 00:13:10,990 --> 00:13:13,710 เราเพียงแค่เขียน printf ใกล้ วงเล็บปีกกาและที่มัน 279 00:13:13,710 --> 00:13:16,500 แต่สำหรับฟรีสิ่งที่ คอมไพเลอร์ได้รับการทำสำหรับคุณ 280 00:13:16,500 --> 00:13:19,510 ได้อย่างมีประสิทธิภาพจะกลับ 0 สำหรับคุณ 281 00:13:19,510 --> 00:13:22,950 เปลี่ยนแทนดูและมันก็เล็ก ๆ น้อย ๆ counterintuitive-- ที่ 0 เป็นสิ่งที่ดี 282 00:13:22,950 --> 00:13:24,690 มันไม่ได้หมายความว่าเท็จต่อ 283 00:13:24,690 --> 00:13:29,080 0 เป็นเรื่องที่ดีและการใด ๆ ที่ไม่ใช่ 0 มูลค่าโลกได้ตัดสินใจ 284 00:13:29,080 --> 00:13:30,619 สามารถมีความหมายผิดพลาด 285 00:13:30,619 --> 00:13:32,910 ดังนั้นถ้าคุณได้เคยสับสน บางสิ่งบางอย่างขึ้นมาบนเครื่องคอมพิวเตอร์ของคุณ 286 00:13:32,910 --> 00:13:36,600 หรือโปรแกรมที่เพิ่งเสียชีวิตไปกับคุณและ คุณเคยหน้าต่างที่ผิดพลาดบางอย่าง 287 00:13:36,600 --> 00:13:40,360 บนหน้าจอของคุณข้อผิดพลาดว่า ลบ 49 หรือข้อผิดพลาด 23-- 288 00:13:40,360 --> 00:13:44,170 บาง value-- โดยพลการที่ดูเหมือนว่า เพราะโปรแกรมเมอร์ได้ยากรหัส 289 00:13:44,170 --> 00:13:49,370 เช่นค่าลบหรือบวก 49 23 แทนจำนวนใด ๆ ที่กล้าพูดว่า 290 00:13:49,370 --> 00:13:53,340 4 พันล้านของสิ่งที่เป็นไปได้ ที่อาจจะไปอย่างผิดปกติในโปรแกรม 291 00:13:53,340 --> 00:13:55,700 >> ดังนั้นวิธีการที่ฉันอาจจะใช้เวลา ประโยชน์จากการนี​​้เองได้หรือไม่ 292 00:13:55,700 --> 00:13:58,970 ดีให้ฉันเปิดโปรแกรม ที่ผมเขียนล่วงหน้า 293 00:13:58,970 --> 00:14:01,450 และกระตุ้นรอบที่เรียกว่าออนไลน์สวัสดี 4 294 00:14:01,450 --> 00:14:05,650 และมันก็เป็นเหมือนกันเกือบยกเว้นว่า มีนิด ๆ หน่อย ๆ ของข้อผิดพลาดการตรวจสอบ 295 00:14:05,650 --> 00:14:09,660 ในกรณีนี้ผมเคยประกาศอีกครั้ง หลักที่การสองข้อโต้แย้ง 296 00:14:09,660 --> 00:14:13,180 แต่เวลานี้อยู่บนเส้น 17 แจ้งให้ทราบล่วงหน้า ฉันทำบิตของการตรวจสอบสุขภาพจิตดี 297 00:14:13,180 --> 00:14:17,100 ฉันแน่ใจว่า argc เท่ากับเท่ากับ 2 298 00:14:17,100 --> 00:14:18,960 เพราะถ้ามันเป็นที่ หมายความว่าฉันสามารถได้อย่างปลอดภัย 299 00:14:18,960 --> 00:14:21,420 สัมผัสไม่เพียง แต่วงเล็บ 0 แต่วงเล็บ 1 300 00:14:21,420 --> 00:14:24,330 และฉันไปข้างหน้าและพิมพ์ออกมา ในกรณีนี้ Zamyla หรือร็อบ 301 00:14:24,330 --> 00:14:26,020 หรืออะไรก็ตามที่ฉันพิมพ์คำออก 302 00:14:26,020 --> 00:14:28,020 และตอนนี้เพียงเพื่อให้ได้ เล็ก ๆ น้อย ๆ ที่เหมาะสมมากขึ้น 303 00:14:28,020 --> 00:14:31,910 ฉันจะกลับมาอย่างชัดเจน 0 ถึงมีความหมายทั้งหมดเป็นอย่างดี 304 00:14:31,910 --> 00:14:33,300 ไม่มีอะไรเกิดขึ้นไม่ดี 305 00:14:33,300 --> 00:14:38,590 >> แต่โดยการประชุมผมจะไป กลับ 1 หรือตรงไปตรงมาใด ๆ ที่ไม่ใช่ 0 ค่า 306 00:14:38,590 --> 00:14:40,160 หากสิ่งที่ผิดพลาดไป 307 00:14:40,160 --> 00:14:43,270 ขณะนี้ผู้ใช้จะไม่ไป จริงๆสังเกตเห็นสิ่งที่เกิดขึ้น 308 00:14:43,270 --> 00:14:50,410 อันที่จริงถ้าผมไปลงในไดเรกทอรีนี้ เราขยายและไม่ทำให้สวัสดี 4 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla ทำงานเป็นฉันคาดหวัง 310 00:14:54,210 --> 00:14:58,570 แต่ถ้าฉันแทนไม่ต้องพิมพ์ สิ่งที่ดูเหมือนจะไม่มีอะไรเกิดขึ้น 311 00:14:58,570 --> 00:14:59,680 แต่มันก็ไม่ได้ผิดพลาด 312 00:14:59,680 --> 00:15:04,660 และถ้าผมทำอะไรบางอย่างแทน เช่นร็อบเป็นทนาย 313 00:15:04,660 --> 00:15:07,550 ในการแบ่งปัน Thayer-- ข้อมูลโดยพลการ 314 00:15:07,550 --> 00:15:13,680 แต่แจ้งให้ทราบล่วงหน้า argv 1, 2, 3, 4, และ 5 ตอนนี้ควรอยู่ในความทรงจำ 315 00:15:13,680 --> 00:15:16,540 ที่มากเกินไปเป็นสิ่งที่ไม่ได้ โปรแกรมของฉันคาดว่า 316 00:15:16,540 --> 00:15:20,300 เพราะผมได้ตรวจสอบว่า argc เท่ากับเท่ากับ 2 หรือไม่ 317 00:15:20,300 --> 00:15:22,140 ดังนั้นตอนนี้ผมปกป้องนี้ 318 00:15:22,140 --> 00:15:25,290 >> ตอนนี้เป็นกันเรา programmer-- หรือมากกว่าเรา users-- 319 00:15:25,290 --> 00:15:29,670 ไม่เคยเห็นที่ 0 หรือ 1 แต่การใช้ เครื่องมือที่เรียกว่าการดีบักเกอร์หรือเครื่องมืออื่น ๆ 320 00:15:29,670 --> 00:15:32,250 ในขณะที่เราจะได้เห็นก่อน นานคุณโปรแกรมเมอร์ 321 00:15:32,250 --> 00:15:36,590 จริงจะเห็นสิ่งที่อาจจะ จะผิดภายในของโปรแกรมของคุณ 322 00:15:36,590 --> 00:15:39,170 >> ดังนั้นคำถามใด ๆ เกี่ยวกับ argc? 323 00:15:39,170 --> 00:15:40,873 ใช่ 324 00:15:40,873 --> 00:15:45,292 >> ผู้ชม: ผมเคยเห็นพวกเขาอยู่ที่ไหน ไม่ได้มีตัวละคร [ไม่ได้ยิน] 325 00:15:45,292 --> 00:15:49,669 เพียงสตริงดาววันเช่นกล่าวว่า ตัวอักษรดอกจันจุลภาค 326 00:15:49,669 --> 00:15:50,710 พวกเขามีความคิดที่นี่? 327 00:15:50,710 --> 00:15:51,626 >> DAVID ลัน: พวกเขา 328 00:15:51,626 --> 00:15:55,080 ดังนั้นคำถามคือคุณจะมี โปรแกรมเห็นเป็นครั้งคราว 329 00:15:55,080 --> 00:15:57,270 เช่นนี้ที่ทำไม่ได้ พูดวงเล็บสตริง argv 330 00:15:57,270 --> 00:16:01,015 แต่แทนที่จะพูดอะไรบางอย่าง เช่นถ่านวงเล็บ argv ดาว 331 00:16:01,015 --> 00:16:03,140 และมีคนอื่น ๆ แม้กระทั่ง สายพันธุ์ที่คุณอาจจะเห็น 332 00:16:03,140 --> 00:16:04,264 พวกเขาเป็นจริงเทียบเท่า 333 00:16:04,264 --> 00:16:06,240 สำหรับตอนนี้เรามีเหล่านี้ การเรียงลำดับของล้อการฝึกอบรม 334 00:16:06,240 --> 00:16:09,737 ในรูปแบบของสตริงใน CS50 ห้องสมุด แต่ในเวลาเพียงกว่าหนึ่งสัปดาห์ 335 00:16:09,737 --> 00:16:12,570 หรือเพื่อให้เราจะเอาที่ อุดตันโดยสิ้นเชิงและจริง 336 00:16:12,570 --> 00:16:16,820 มองสิ่งที่ถ่านและดาว นี้และวิธีที่เกี่ยวข้องกับหน่วยความจำ 337 00:16:16,820 --> 00:16:18,140 การแสดงมากขึ้นโดยทั่วไป 338 00:16:18,140 --> 00:16:19,540 ดังนั้นเราจะกลับมาที่ 339 00:16:19,540 --> 00:16:21,540 >> คำถามอื่น ๆ หรือ argv argc ของเราหรือไม่ 340 00:16:21,540 --> 00:16:22,397 ใช่ 341 00:16:22,397 --> 00:16:24,438 ผู้ชม: ทำไมมันไม่กลับมา ข้อผิดพลาด [ไม่ได้ยิน] 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID ลัน: ทำไมไม่ได้ กลับข้อผิดพลาด only-- โอ้! 344 00:16:29,230 --> 00:16:31,813 ในกรณีที่ก่อนหน้านี้เมื่อเรา ถูก futzing รอบกับหน่วยความจำ 345 00:16:31,813 --> 00:16:35,110 ทำไมมันมี แต่จะกลับข้อผิดพลาด เมื่อผมพิมพ์เป็นจำนวนมาก? 346 00:16:35,110 --> 00:16:36,620 คำตอบสั้น ๆ คือเราก็มีโชคดี 347 00:16:36,620 --> 00:16:39,240 โดยทั่วไปคอมพิวเตอร์ จัดสรรหน่วยความจำในชิ้น, 348 00:16:39,240 --> 00:16:42,900 และมันทำให้ผมก้อนใหญ่พอที่ ฉันได้ไปโดยไม่ถูกสังเกตเห็น 349 00:16:42,900 --> 00:16:46,280 ของสัมผัสวงเล็บ 2 วงเล็บ 3 วงเล็บ 50 แต่ทันทีที่ผมผลักดัน 350 00:16:46,280 --> 00:16:49,080 โชคของฉันฉันไปเกิน ขอบเขตของก้อนของหน่วยความจำ 351 00:16:49,080 --> 00:16:50,520 ระบบปฏิบัติการมีให้ฉัน 352 00:16:50,520 --> 00:16:52,720 และนั่นคือเมื่อมัน clamped ลงและกล่าวว่าไม่มี 353 00:16:52,720 --> 00:16:54,580 ข้อผิดพลาดของการแบ่งส่วน 354 00:16:54,580 --> 00:16:55,692 ใช่ 355 00:16:55,692 --> 00:16:58,890 >> ผู้ชม: วิธีการที่ไม่ใช้คอมพิวเตอร์ รู้ค่าของ argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID ลัน: อย่างไร คอมพิวเตอร์รู้ค่าของ argc? 357 00:17:02,390 --> 00:17:07,920 เมื่อคุณเรียกใช้โปรแกรมโปรแกรมที่ โดยลักษณะของการให้กระพริบ 358 00:17:07,920 --> 00:17:11,359 ถูกส่งอาร์เรย์ของ คำที่ถูกพิมพ์ 359 00:17:11,359 --> 00:17:13,300 ที่พรอมต์ที่เป็น พิมพ์ที่พรอมต์ 360 00:17:13,300 --> 00:17:16,569 และดังนั้นจึงเป็นปฏิบัติการของคุณ ระบบที่เป็นหลัก 361 00:17:16,569 --> 00:17:20,329 populates ข้อโต้แย้งหลักสำหรับคุณ 362 00:17:20,329 --> 00:17:22,829 เพื่อให้เป็นหนึ่งในบริการที่ ที่คุณได้รับการจัดเรียงของแอบ 363 00:17:22,829 --> 00:17:24,869 ภายใต้ประทุนของ ระบบปฏิบัติการ 364 00:17:24,869 --> 00:17:27,118 คำถามอื่น ๆ ? 365 00:17:27,118 --> 00:17:27,618 ใช่ 366 00:17:27,618 --> 00:17:29,787 >> ผู้ชม: อะไรถ่ายโอนข้อมูลหลักหมายความว่าอย่างไร 367 00:17:29,787 --> 00:17:31,370 DAVID ลัน: อะไรถ่ายโอนข้อมูลหลักหมายความว่าอย่างไร 368 00:17:31,370 --> 00:17:32,950 เพื่อให้เป็นคำถามที่ดี 369 00:17:32,950 --> 00:17:35,312 และให้ฉันกลับไป ไดเรกทอรีนี้ที่นี่ 370 00:17:35,312 --> 00:17:37,270 และคุณจะสังเกตเห็นว่า ผมมีไฟล์ใหม่มี 371 00:17:37,270 --> 00:17:41,670 มันเรียกว่าแน่นอนที่สำคัญและเป็น จริงโดยปกติจะเป็นไฟล์ที่ดีขนาด 372 00:17:41,670 --> 00:17:45,300 ที่เป็นหลักภาพรวมของ เนื้อหาของหน่วยความจำโปรแกรมของฉัน 373 00:17:45,300 --> 00:17:46,902 หรือ RAM เมื่อมันตก 374 00:17:46,902 --> 00:17:49,110 และสิ่งนี้จะเป็นประโยชน์ อาจ diagnostically, 375 00:17:49,110 --> 00:17:52,850 เมื่อเราพูดในการบรรยายในอนาคต และส่วนที่เกี่ยวกับการแก้จุดบกพร่อง 376 00:17:52,850 --> 00:17:55,730 เพราะคุณสามารถจริงทำ เทียบเท่ากับการชันสูตรศพดิจิตอล 377 00:17:55,730 --> 00:18:00,300 ในแฟ้มที่จะช่วยให้คิดออก สิ่งที่คุณทำผิดพลาดในโปรแกรมของคุณ 378 00:18:00,300 --> 00:18:01,220 ใช่ 379 00:18:01,220 --> 00:18:04,450 >> ผู้ชม: เป็น argc คำสั่งใน ตัวเองหรือคุณสามารถตั้งชื่ออะไร? 380 00:18:04,450 --> 00:18:05,575 >> DAVID ลัน: คำถามที่ดี 381 00:18:05,575 --> 00:18:08,040 เป็น argc คำสั่งในตัวเอง หรือคุณสามารถตั้งชื่ออะไร? 382 00:18:08,040 --> 00:18:09,290 มันแน่นอนไม่ได้คำสั่ง 383 00:18:09,290 --> 00:18:13,500 เป็นเพียงตัวแปรของ ชื่อหรือชื่ออาร์กิวเมนต์ฯ 384 00:18:13,500 --> 00:18:15,481 และอื่น ๆ อย่างเรา สามารถโทร foo นี้ 385 00:18:15,481 --> 00:18:18,480 เราสามารถเรียกแถบนี้ซึ่งมีแนวโน้มที่ จะไปถึงคำว่าคอมพิวเตอร์ 386 00:18:18,480 --> 00:18:19,860 นักวิทยาศาสตร์ไป 387 00:18:19,860 --> 00:18:22,820 แต่โดยการประชุมเราใช้ argc และ argv 388 00:18:22,820 --> 00:18:25,360 แต่นั่นเป็นเพียงมนุษย์ การประชุมไม่มีอะไรมาก 389 00:18:25,360 --> 00:18:25,860 ขวาทั้งหมด 390 00:18:25,860 --> 00:18:28,140 ดังนั้นจะเปิดออกฉันได้รับ บอกบิตของ lie-- สีขาว 391 00:18:28,140 --> 00:18:31,264 และตรงไปตรงมาในอนาคตคุณจะเห็น เราได้รับการโกหกสีขาวอื่น ๆ 392 00:18:31,264 --> 00:18:33,510 แต่ตอนนี้เรากำลังจะ ที่จะปอกเปลือกกลับหนึ่งของเหล่านี้ 393 00:18:33,510 --> 00:18:37,310 ในกรณีนี้ที่นี่เมื่อผมก่อนหน้านี้ วิ่งโปรแกรมเช่น ./hello หรือ ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla เรามีเนื้อหาของฉัน หน่วยความจำของคอมพิวเตอร์มอง ๆ เช่น 395 00:18:42,780 --> 00:18:43,280 นี้ 396 00:18:43,280 --> 00:18:45,070 แต่จำสิ่งที่เป็นสตริง 397 00:18:45,070 --> 00:18:49,279 เราพูดว่าอะไรสัปดาห์ที่ผ่านมาสิ่งที่ สตริงเป็นจริงภายใต้กระโปรงหน้ารถหรือไม่ 398 00:18:49,279 --> 00:18:50,320 ผู้ชม: อาร์เรย์ของตัวอักษร 399 00:18:50,320 --> 00:18:52,111 DAVID ลัน: มันเป็น อาร์เรย์ของตัวอักษรใช่มั้ย? 400 00:18:52,111 --> 00:18:55,760 ดังนั้นเราอาจจะมีอาร์เรย์ของ สตริง แต่ในทางกลับสตริง 401 00:18:55,760 --> 00:18:57,150 เป็นอาร์เรย์ของตัวอักษร 402 00:18:57,150 --> 00:19:00,010 ดังนั้นถ้าผมต้องการที่จะ ทางทวารหนั​​กเมื่อผมวาดภาพนี้ 403 00:19:00,010 --> 00:19:03,290 ฉันควรจะวาดภาพ มันมากขึ้นเล็ก ๆ น้อย ๆ เช่นนี้ 404 00:19:03,290 --> 00:19:08,000 โดยในแต่ละเหล่านี้ ดัชนีของอาร์เรย์ argv ของฉัน 405 00:19:08,000 --> 00:19:11,432 มีความเป็นตัวเองสตริงทั้ง ที่ตัวเองเป็นในอาร์เรย์ 406 00:19:11,432 --> 00:19:13,140 และตอนนี้โกหกสีขาว เรากำลังบอกวันนี้ 407 00:19:13,140 --> 00:19:15,181 เป็นภาพที่ไม่ได้ ดูค่อนข้างเช่นนี้ 408 00:19:15,181 --> 00:19:19,110 ในความเป็นจริงเป็นสี่เหลี่ยมเล็ก ๆ โดยปกติจะอยู่ด้านนอกของรูปสี่เหลี่ยมขนาดใหญ่ 409 00:19:19,110 --> 00:19:19,610 มี 410 00:19:19,610 --> 00:19:21,280 แต่เราจะกลับไปที่มาไม่นาน 411 00:19:21,280 --> 00:19:25,440 แต่นี้เป็น ./hello เครื่องหมาย 0, ว่าเป็นตัวละครพิเศษที่ 412 00:19:25,440 --> 00:19:28,310 demarcates ปลายสายที่ และเราได้มีอีกคนหนึ่งหลังจากที่ 413 00:19:28,310 --> 00:19:29,360 ชื่อ Zamyla ของ 414 00:19:29,360 --> 00:19:30,900 ดังนั้นสิ่งนี้หมายความว่าอย่างไร 415 00:19:30,900 --> 00:19:33,410 >> ดีให้ฉันไปข้างหน้าและ เปิดสองตัวอย่างอื่น ๆ 416 00:19:33,410 --> 00:19:35,220 ที่มีอยู่ทั่วไป 417 00:19:35,220 --> 00:19:40,590 หนึ่งเรียกว่า argv1.c และอื่น ๆ เป็น argv2 418 00:19:40,590 --> 00:19:44,260 เป็นโปรแกรมซุปเปอร์ง่ายที่ จะแตกต่างจากโปรแกรมที่ผ่านมา 419 00:19:44,260 --> 00:19:47,260 ในที่นี้ผมใช้ argc และ argv ขึ้นที่นี่ 420 00:19:47,260 --> 00:19:54,300 และตอนนี้ฉันการบูรณาการกับการห่วง ในสาย 18 จาก i = 0 ได้ถึง argc 421 00:19:54,300 --> 00:19:56,850 และสิ่งที่ฉันจะทำ กับบรรทัดของรหัสที่นี่? 422 00:19:56,850 --> 00:19:58,270 ในภาษาอังกฤษ 423 00:19:58,270 --> 00:20:00,510 นี้เห็นได้ชัดแสดงให้เห็นถึงการใช้ argc 424 00:20:00,510 --> 00:20:03,670 แต่ในภาษาอังกฤษสิ่งที่ไม่ มันทำอย่างไรถ้าผมใช้โปรแกรมนี้ 425 00:20:03,670 --> 00:20:04,366 ใช่? 426 00:20:04,366 --> 00:20:07,386 >> ผู้ชม: มันจะพิมพ์ของคุณ หน้าจอหลายครั้งตามที่คุณต้องการ 427 00:20:07,386 --> 00:20:08,260 DAVID ลัน: แน่นอน 428 00:20:08,260 --> 00:20:10,480 ดังนั้นสิ่งที่ฉันพูด พิมพ์ที่พร้อมท์ก็ 429 00:20:10,480 --> 00:20:13,120 จะไหลกลับ พวกเขามาที่ผมต่อหนึ่งบรรทัด 430 00:20:13,120 --> 00:20:14,370 จึงขอไปข้างหน้าและทำเช่นนี้ 431 00:20:14,370 --> 00:20:17,862 ให้ฉันไปลงในไดเรกทอรีของฉัน และจะทำให้ ./argv1 argv1 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 และตอนนี้ขอให้มันง่าย 434 00:20:21,770 --> 00:20:23,834 ลองทำอะไรในตอนแรก 435 00:20:23,834 --> 00:20:26,750 มันก็พิมพ์ออกมาสิ่งหนึ่งและ ที่จริงชื่อของโปรแกรม 436 00:20:26,750 --> 00:20:28,240 เพราะที่อยู่ในวงเล็บ 0 437 00:20:28,240 --> 00:20:33,290 ถ้าตอนนี้ผมบอกว่า foo ก็จะทำ ทั้งสองและถ้าผมบอกว่าบาร์ foo, 438 00:20:33,290 --> 00:20:35,580 มันจะบอกว่าทั้งสามสิ่ง 439 00:20:35,580 --> 00:20:37,740 ตอนนี้ที่น่าสนใจบ้างบางที 440 00:20:37,740 --> 00:20:41,450 แต่จำ argv ที่ เป็นอาร์เรย์ของสตริง, 441 00:20:41,450 --> 00:20:45,960 แต่สตริงเป็นอาร์เรย์ของตัวอักษร, เพื่อให้เราสามารถใช้สิ่งที่ขึ้นรอย 442 00:20:45,960 --> 00:20:48,560 และใช้ที่พื้นฐาน ตรรกะและสร้างรหัสที่ 443 00:20:48,560 --> 00:20:51,160 มีลักษณะเล็ก ๆ น้อย ๆ ที่เป็นความลับมากขึ้นเป็นที่ยอมรับ 444 00:20:51,160 --> 00:20:53,540 แต่โดยมีที่ซ้อนกัน ห่วงสิ่งที่คล้าย 445 00:20:53,540 --> 00:20:57,030 กับสิ่งที่คุณอาจจะจำจากมาริโอ ตัวอย่างเช่นถ้าคุณทำมันด้วยวิธีนี้ 446 00:20:57,030 --> 00:21:00,380 >> ดังนั้นตอนนี้สังเกตเห็นในบรรทัดที่ 19 ฉัน อีกครั้ง iterating กว่าข้อโต้แย้งของฉัน 447 00:21:00,380 --> 00:21:02,410 จาก 0 ขึ้นไป argc 448 00:21:02,410 --> 00:21:05,510 และตอนนี้ในสาย 21-- ฉัน เคล็ดลับการกู้ยืมเงินจาก week-- ล่าสุด 449 00:21:05,510 --> 00:21:11,090 ฉันกำลังตรวจสอบสิ่งที่เป็น ความยาวของ argv ฉันวงเล็บ 450 00:21:11,090 --> 00:21:12,920 ฉันเก็บคำตอบใน n ที่ 451 00:21:12,920 --> 00:21:18,230 แล้วฉันการบูรณาการจาก J เมื่อวันที่ ถึง n โดยที่เจจะเริ่มต้นให้เป็น 0 452 00:21:18,230 --> 00:21:19,460 ดังนั้นการประชุมสำหรับการนับ 453 00:21:19,460 --> 00:21:22,335 เมื่อคุณใช้ฉันถ้าคุณมี วงที่ซ้อนกันคุณจะไม่สามารถใช้ฉันอีกครั้ง 454 00:21:22,335 --> 00:21:25,770 มิฉะนั้นคุณจะข่มขี่อาจ, ค่าที่อยู่ด้านนอกของวงภายใน 455 00:21:25,770 --> 00:21:27,200 ดังนั้นฉันใช้เจโดยการประชุม 456 00:21:27,200 --> 00:21:28,020 เราอาจจะใช้ k 457 00:21:28,020 --> 00:21:31,080 ถ้าคุณมีมากกว่า k คุณอาจ มีมากเกินไปทำรังโดยทั่วไป 458 00:21:31,080 --> 00:21:33,800 แต่ตอนนี้สังเกตเห็น printf ของฉัน สายแตกต่างกันเล็กน้อย 459 00:21:33,800 --> 00:21:37,520 ผมไม่ได้พิมพ์% s ฉัน พิมพ์ c% ซึ่งแน่นอน 460 00:21:37,520 --> 00:21:39,460 เป็นตัวยึดสำหรับถ่าน 461 00:21:39,460 --> 00:21:40,770 >> และตอนนี้สังเกตเห็นรูปแบบนี้ 462 00:21:40,770 --> 00:21:41,270 ใหม่ 463 00:21:41,270 --> 00:21:42,630 เรายังไม่ได้เห็นมาก่อน 464 00:21:42,630 --> 00:21:47,290 แต่เหตุผลนี้ก็หมายความว่า ได้รับสายบอดใน argv 465 00:21:47,290 --> 00:21:50,067 และได้รับสิ่งที่ j? 466 00:21:50,067 --> 00:21:50,900 ผู้ชม: ตัวอักษร 467 00:21:50,900 --> 00:21:52,800 DAVID ลัน: ตัวอักษรในสตริงที่ 468 00:21:52,800 --> 00:21:57,100 ดังนั้นโดยใช้วงเล็บ ตามด้วยวงเล็บ 469 00:21:57,100 --> 00:22:00,390 นี่คือการดำน้ำครั้งแรก เป็นสตริง argv ของ 470 00:22:00,390 --> 00:22:02,225 แล้วที่สอง วงเล็บกับเจ 471 00:22:02,225 --> 00:22:06,580 เป็นดำน้ำในตัวละครของ สตริงโดยเฉพาะอย่างยิ่งว่าใน argv 472 00:22:06,580 --> 00:22:09,562 และจากนั้นเพียงแค่การวัดที่ดี ผมพิมพ์บรรทัดใหม่ที่นี่ 473 00:22:09,562 --> 00:22:12,020 ดังนั้นตอนนี้ให้ฉันไปข้างหน้าและเปิด ขึ้นหน้าต่างใหญ่กว่าเล็กน้อย 474 00:22:12,020 --> 00:22:13,600 เพื่อให้เราสามารถเห็นสิ่งนี้ในการดำเนินการ 475 00:22:13,600 --> 00:22:15,700 ให้ฉันไปลงในโฟลเดอร์นั้น 476 00:22:15,700 --> 00:22:22,550 และตอนนี้จะทำให้ argv-2-- whoops-- ทำให้ argv-2, ./argv 2 477 00:22:22,550 --> 00:22:23,110 ใส่ 478 00:22:23,110 --> 00:22:24,860 และมันก็เป็นเพียงเล็กน้อยยาก การอ่านในแนวตั้ง 479 00:22:24,860 --> 00:22:27,920 แต่ที่จริงชื่อของ โปรแกรมตามด้วยบรรทัดว่าง 480 00:22:27,920 --> 00:22:30,210 ตอนนี้ให้ฉันไปข้างหน้าและทำ foo 481 00:22:30,210 --> 00:22:33,210 ในทำนองเดียวกันยากที่จะอ่าน แต่ก็ แน่นอนการพิมพ์หนึ่งตัวอักษรต่อบรรทัด 482 00:22:33,210 --> 00:22:36,780 และถ้าผมทำบาร์ก็ตอนนี้ พิมพ์สายผู้โดยสาย 483 00:22:36,780 --> 00:22:40,140 ดังนั้น Takeaway ที่นี่เป็นไม่มาก ว่าว้าวดูที่เคล็ดลับใหม่นี้เรียบร้อย 484 00:22:40,140 --> 00:22:44,750 ที่คุณจะได้รับเนื้อหา ของตัวละครที่เฉพาะเจาะจงของอาเรย์, 485 00:22:44,750 --> 00:22:48,380 แต่วิธีการที่เราจะเอาพื้นฐานเหล่านี้ ความคิดเช่นเดียวกับการจัดทำดัชนีในอาร์เรย์ 486 00:22:48,380 --> 00:22:51,620 แล้วจัดทำดัชนีใน อาร์เรย์ที่อยู่ในแถวที่ 487 00:22:51,620 --> 00:22:56,180 และเพียงแค่ใช้ความคิดเดียวกันกับ ตัวอย่างที่ซับซ้อนมากขึ้นเล็กน้อย 488 00:22:56,180 --> 00:22:59,560 แต่พื้นฐานจริงๆมีไม่ได้ เปลี่ยนแปลงได้ตั้งแต่สัปดาห์ที่แล้ว 489 00:22:59,560 --> 00:23:02,350 >> ขณะนี้เป็นที่จัดเรียงของทันเวลา ในการที่เรียกคืนในสัปดาห์ที่ศูนย์ 490 00:23:02,350 --> 00:23:04,110 เราเล่นกับสมุดโทรศัพท์เช่นนี้ 491 00:23:04,110 --> 00:23:06,670 และแม้ว่านี้จะเห็นได้ชัด ชิ้นทางกายภาพของกระดาษ 492 00:23:06,670 --> 00:23:09,150 คุณสามารถชนิดของคิด สมุดโทรศัพท์เป็นอาร์เรย์ 493 00:23:09,150 --> 00:23:12,770 แน่นอนถ้าคุณจะ reimplement ชิ้นนี้ชิ้นส่วนเหล่านี้จากกระดาษ 494 00:23:12,770 --> 00:23:15,260 ในเครื่องคอมพิวเตอร์อาจจะ คุณจะใช้สิ่งที่ 495 00:23:15,260 --> 00:23:20,270 เช่นอาร์เรย์ในการจัดเก็บทุกคน ชื่อและหมายเลขจากทุกทาง 496 00:23:20,270 --> 00:23:23,800 ถึง Z ดังนั้นนี่เป็นสิ่งที่ดีเพราะ มันจะช่วยให้เรามีโอกาสที่ 497 00:23:23,800 --> 00:23:28,310 บางทีที่จะต้องพิจารณาวิธีการที่คุณอาจจะ จริงใช้สิ่งที่ต้องการที่ 498 00:23:28,310 --> 00:23:31,250 เช่นเดียวกับชุดของประตูที่นี่ 499 00:23:31,250 --> 00:23:36,380 ดังนั้นถ้าผม could-- เราจำเป็นต้องใช้ อาสาสมัครที่จะมาขึ้น 500 00:23:36,380 --> 00:23:36,980 ลองมาดูกัน 501 00:23:36,980 --> 00:23:40,650 ใบหน้าที่ไม่คุ้นเคยอาจจะ ใบหน้าที่ไม่คุ้นเคยอาจจะ 502 00:23:40,650 --> 00:23:42,090 วิธีการเกี่ยวกับสีส้ม? 503 00:23:42,090 --> 00:23:42,680 ที่นี่ 504 00:23:42,680 --> 00:23:45,870 เสื้อสีส้มมาขึ้น 505 00:23:45,870 --> 00:23:52,230 >> ให้เป็นไปข้างหน้าในขณะนี้และย้าย ประตูเหล่านี้ไปยังด้านข้าง 506 00:23:52,230 --> 00:23:54,020 ย้ายเหล่านี้ออกจากทางสำหรับสักครู่ 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 คุณชื่ออะไร? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID ลัน: Ajay 511 00:23:58,655 --> 00:23:58,680 เดวิด 512 00:23:58,680 --> 00:23:59,451 มีความสุขที่ได้พบคุณ 513 00:23:59,451 --> 00:23:59,950 ขวาทั้งหมด 514 00:23:59,950 --> 00:24:04,500 เพื่อให้เรามีที่อยู่เบื้องหลังเหล่านี้หก ประตูระบบดิจิตอล screen-- 515 00:24:04,500 --> 00:24:07,810 หรือค่อนข้างเจ็ดประตู screen-- ทั้งกลุ่มของตัวเลข 516 00:24:07,810 --> 00:24:10,099 และฉันได้บอกคุณไม่มีอะไร ใน advance-- ตกลง? 517 00:24:10,099 --> 00:24:11,140 AJAY: ไม่มีอะไรล่วงหน้า 518 00:24:11,140 --> 00:24:14,730 DAVID ลัน: ทั้งหมดที่ฉันต้องการให้คุณทำ ตอนนี้คือการหาสำหรับฉันและสำหรับเรา 519 00:24:14,730 --> 00:24:20,920 จริงๆจำนวน 50, หนึ่งขั้นในเวลา 520 00:24:20,920 --> 00:24:21,830 >> AJAY: หมายเลข 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID ลัน: หมายเลข 50 522 00:24:22,580 --> 00:24:24,746 และคุณสามารถที่จะเปิดเผยสิ่งที่ หลังแต่ละประตูเหล่านี้ 523 00:24:24,746 --> 00:24:27,930 โดยเพียงแค่การสัมผัสด้วยนิ้ว 524 00:24:27,930 --> 00:24:31,364 บ้าที่สุด [หัวเราะ] 525 00:24:31,364 --> 00:24:34,560 >> [APPLAUSE] 526 00:24:34,560 --> 00:24:39,540 >> ทำได้ดีมาก 527 00:24:39,540 --> 00:24:40,400 ตกลง 528 00:24:40,400 --> 00:24:44,090 เรามีของขวัญที่น่ารัก รางวัลสำหรับคุณที่นี่ 529 00:24:44,090 --> 00:24:46,520 เลือกของคุณของภาพยนตร์ที่เรา เมื่อสัปดาห์ที่แล้วกล่าวถึง 530 00:24:46,520 --> 00:24:47,362 >> AJAY: โอ้มนุษย์ 531 00:24:47,362 --> 00:24:49,050 โอ้ฉันไม่เคยเห็น Spaceballs 532 00:24:49,050 --> 00:24:49,520 >> DAVID ลัน: Spaceballs 533 00:24:49,520 --> 00:24:50,140 ขวาทั้งหมด 534 00:24:50,140 --> 00:24:53,790 ดังนั้นถือเพียงหนึ่งช่วงเวลา 535 00:24:53,790 --> 00:24:57,430 How-- ขอให้นี้ moment-- เชื่อฟัง 536 00:24:57,430 --> 00:25:00,412 คุณไม่ได้ไปเกี่ยวกับ หาจำนวน 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: ผมเลือกแบบสุ่ม 538 00:25:01,370 --> 00:25:03,420 DAVID ลัน: เพื่อให้คุณเลือก แบบสุ่มและมีโชคดี 539 00:25:03,420 --> 00:25:03,790 AJAY: ใช่ 540 00:25:03,790 --> 00:25:04,456 DAVID ลัน: OK 541 00:25:04,456 --> 00:25:05,050 ที่ดีเยี่ยม 542 00:25:05,050 --> 00:25:08,470 ดังนั้นตอนนี้คุณไม่ได้มี อากาศโชคดีอะไร 543 00:25:08,470 --> 00:25:10,210 อาจจะเกิดขึ้นหลังประตูเหล่านี้หรือไม่ 544 00:25:10,210 --> 00:25:12,930 ดังนั้นถ้าฉันไปข้างหน้าและ เปิดเผยตัวเลขเหล่านี้ที่นี่ 545 00:25:12,930 --> 00:25:15,180 พวกเขาเป็นจริงในลำดับแบบสุ่ม 546 00:25:15,180 --> 00:25:17,750 และที่ดีที่สุดที่คุณสามารถมี ทำตรงไปตรงมาคือในที่สุด 547 00:25:17,750 --> 00:25:19,410 ในกรณีที่เลวร้ายที่สุดในการตรวจสอบพวกเขาทั้งหมด 548 00:25:19,410 --> 00:25:23,000 เพื่อให้คุณได้ซุปเปอร์โชคดีที่ ไม่ใช่สิ่งที่เราจะเรียกอัลกอริทึม 549 00:25:23,000 --> 00:25:24,730 ใช่ขอแสดงความยินดี 550 00:25:24,730 --> 00:25:27,010 แต่ตอนนี้ let's-- อารมณ์ขันฉันถ้าคุณสามารถทำได้ 551 00:25:27,010 --> 00:25:28,310 ให้ไปที่แท็บที่นี่ 552 00:25:28,310 --> 00:25:31,460 และนี่คือตัวเลขในอย่างชัดเจน สิ่งที่น่าจะเป็นแบบสุ่ม 553 00:25:31,460 --> 00:25:32,280 และพวกเขาก็ 554 00:25:32,280 --> 00:25:35,160 แต่ตอนนี้ถ้าผมเรียกร้องแทน ที่อยู่เบื้องหลังประตูเหล่านี้ 555 00:25:35,160 --> 00:25:39,070 เป็นตัวเลขที่เรียงลำดับ 556 00:25:39,070 --> 00:25:41,780 เป้าหมายตอนนี้คือการยัง พบกับเราได้หมายเลข 50 557 00:25:41,780 --> 00:25:45,910 แต่ทำมันอัลกอริทึมและ บอกเราว่าคุณกำลังจะไปเกี่ยวกับเรื่องนี้ 558 00:25:45,910 --> 00:25:48,020 และถ้าคุณพบว่าคุณเก็บภาพยนตร์ 559 00:25:48,020 --> 00:25:49,520 คุณพบว่ามันไม่คุณจะให้มันกลับ 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: ดังนั้นฉันจะไปตรวจสอบปลาย ครั้งแรกเพื่อตรวจสอบว่า there's-- 562 00:25:58,112 --> 00:26:02,048 [เสียงหัวเราะและ APPLAUSE] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID ลัน: นี่คุณไป 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 ลองมาดูที่หนึ่ง ของรุ่นก่อน Ajay ของ 567 00:26:21,700 --> 00:26:25,450 ฌอนที่ไม่ได้ค่อนข้างโชคดี 568 00:26:25,450 --> 00:26:28,670 ตกลงเพื่อให้งานของคุณที่นี่ ฌอนเป็นดังต่อไปนี้ 569 00:26:28,670 --> 00:26:32,970 ฉันได้ซ่อนอยู่หลังเหล่านี้ ประตูหมายเลขเจ็ด 570 00:26:32,970 --> 00:26:37,200 แต่ซุกอยู่ในบางส่วนของประตูเหล่านี้ รวมทั้งเป็นตัวเลขที่ไม่ใช่เชิงลบอื่น ๆ 571 00:26:37,200 --> 00:26:40,730 และเป้าหมายของคุณคือการคิดนี้ แถวบนสุดของตัวเลขเป็นเพียงอาร์เรย์ 572 00:26:40,730 --> 00:26:43,590 เราเป็นแค่ลำดับของชิ้น ของกระดาษที่มีตัวเลขอยู่ข้างหลังพวกเขา 573 00:26:43,590 --> 00:26:47,640 และเป้าหมายของคุณคือเพียงใช้ด้านบน อาร์เรย์ที่นี่หาฉันหมายเลขเจ็ด 574 00:26:47,640 --> 00:26:51,200 และเราก็จะไปวิจารณ์ วิธีการที่คุณไปเกี่ยวกับการทำมัน 575 00:26:51,200 --> 00:26:52,920 พบกับเราได้หมายเลขเจ็ดโปรด 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 ฉบับที่ 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 มันไม่ใช่คำถามเคล็ดลับ 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 ณ จุดนี้คะแนนของคุณไม่มาก ที่ดีดังนั้นคุณอาจรวมทั้งให้ไป 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 ไปเมื่อวันที่ 590 00:27:39,802 --> 00:27:42,510 ตรงไปตรงมาผมไม่สามารถช่วย แต่สงสัย สิ่งที่คุณได้คิดเกี่ยวกับ 591 00:27:42,510 --> 00:27:44,990 >> SEAN: ฉันสามารถใช้จากเพียงแถวบนสุด 592 00:27:44,990 --> 00:27:46,240 DAVID ลัน: เฉพาะแถวบนสุด 593 00:27:46,240 --> 00:27:47,281 เพื่อให้คุณได้มีสามทางด้านซ้าย 594 00:27:47,281 --> 00:27:48,310 ดังนั้นหาฉัน 7 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [ผู้ชมตะโกนคำแนะนำ] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 ดังนั้นทั้งสองของผู้ที่เป็นที่น่าตื่นตาตื่นใจ ด้วยเหตุผลที่แตกต่างกันมาก 599 00:28:26,130 --> 00:28:29,150 ดังนั้นนี่คือที่ที่เรา ซ้ายปิดช่วงเวลาที่ผ่านมา 600 00:28:29,150 --> 00:28:32,530 และความเข้าใจที่สำคัญที่นี่ ได้ประตูเหล่านี้มีจำนวน 601 00:28:32,530 --> 00:28:37,390 หลังเหล่านั้นที่ถูกจัดเรียงเหมาะ Takeaway ซึ่งเป็นที่ที่คุณสามารถทำ 602 00:28:37,390 --> 00:28:39,670 พื้นฐานที่ดีขึ้นใน ยกตัวอย่างที่สองนี้ 603 00:28:39,670 --> 00:28:42,380 และแน่นอนว่าเป็นของฌอน ความพยายามครั้งแรกที่มีตัวเลขสุ่ม 604 00:28:42,380 --> 00:28:45,460 เช่นเดียวกับ before-- แต่ทันที เป็นตัวเลขเหล่านี้จะเรียงลำดับ 605 00:28:45,460 --> 00:28:47,980 เหมือนสมุดโทรศัพท์ สิ่งที่คุณสามารถเห็นได้ชัดว่าทำอย่างไร 606 00:28:47,980 --> 00:28:50,090 หรือวิธีการที่คุณสามารถใช้ประโยชน์จากความรู้ที่? 607 00:28:50,090 --> 00:28:51,530 ใช่ 608 00:28:51,530 --> 00:28:54,910 >> ผู้ชม: คุณไปครึ่งทาง [ไม่ได้ยิน] 609 00:28:54,910 --> 00:28:55,660 DAVID ลัน: ใช่ 610 00:28:55,660 --> 00:28:56,160 ว่า 611 00:28:56,160 --> 00:28:59,680 ดังนั้นสัญชาตญาณแรก Ajay เป็น เพื่อตรวจสอบการสิ้นสุดที่ผมจำได้ 612 00:28:59,680 --> 00:29:02,320 แล้วเราเรียงลำดับของการเสร็จสิ้นแล้ว ตัวอย่างได้อย่างรวดเร็ว 613 00:29:02,320 --> 00:29:05,220 แต่ถ้าเราเริ่มที่จะทำอะไรได้มากกว่านี้ มีระบบตามสายเหล่านั้น 614 00:29:05,220 --> 00:29:07,860 แต่เริ่มต้นอาจจะอยู่ใน กลางเพราะพวกเขากำลังจัดเรียง 615 00:29:07,860 --> 00:29:10,900 ทันทีที่เราเปิดเผย จำนวน 16 เราจึง know-- 616 00:29:10,900 --> 00:29:14,850 และขอให้ทำตรง that-- เรา จึงรู้ว่า 50 ในกรณีที่วันนี้ 617 00:29:14,850 --> 00:29:16,080 ได้จะต้องเป็นไปทางขวา 618 00:29:16,080 --> 00:29:18,735 ดังนั้นเช่นเดียวกับในสัปดาห์ที่ศูนย์เมื่อ เราฉีกสมุดโทรศัพท์ในช่วงครึ่งปี 619 00:29:18,735 --> 00:29:21,490 และโยนครึ่งหนึ่งของ ปัญหาออกไปความคิดเดียวกันที่นี่ 620 00:29:21,490 --> 00:29:23,680 เราสามารถโยนครึ่งนี้ ของปัญหาออกไป 621 00:29:23,680 --> 00:29:25,730 และอาจเป็นสิ่งที่คุณ อาจจะทำอัลกอริทึม, 622 00:29:25,730 --> 00:29:28,710 เมื่อคุณรู้ว่า 50 จะต้องเป็น ไปทางขวาถ้ามันได้ทุกที่ 623 00:29:28,710 --> 00:29:31,390 คือพยายามที่มีอยู่ตรงกลาง ของประตูที่เหลือ 624 00:29:31,390 --> 00:29:33,450 แน่นอน 50 จะสูงกว่า กว่า 42 ดังนั้นเราจึงสามารถ 625 00:29:33,450 --> 00:29:36,060 โยนที่เหลืออยู่นี้ ไตรมาสของปัญหาออกไป 626 00:29:36,060 --> 00:29:38,510 และในที่สุดระบุ 50 สิ่งที่ชอบ 627 00:29:38,510 --> 00:29:41,050 แต่เช่นเดียวกับ สมุดโทรศัพท์ตัวเลขเหล่านี้ 628 00:29:41,050 --> 00:29:44,560 ถูกมอบให้กับเราแล้วใน เพื่อเรียงลำดับซึ่งจะทำให้เรา 629 00:29:44,560 --> 00:29:47,450 กับคำถามอย่างไรคุณ ได้รับสิ่งที่เป็นคำสั่งแยก? 630 00:29:47,450 --> 00:29:49,640 และตรงไปตรงมาในสิ่งที่ค่าใช้จ่าย? 631 00:29:49,640 --> 00:29:51,390 เป็นสิ่งหนึ่งที่จะเป็น ส่งสมุดโทรศัพท์ 632 00:29:51,390 --> 00:29:54,810 แล้วสร้างความประทับใจให้เพื่อนของคุณโดยการหา หมายเลขโทรศัพท์อย่างรวดเร็วจริงๆใช่มั้ย? 633 00:29:54,810 --> 00:29:58,520 32 หน้าฉีกขาดออกไปหา คนที่ออกมาจาก 4 พันล้านหน้า 634 00:29:58,520 --> 00:30:00,470 เรากล่าวว่าเป็นตัวอย่างที่ชัดเจนอย่างใดอย่างหนึ่ง 635 00:30:00,470 --> 00:30:03,320 แต่เท่าใดเวลาที่มันใช้เวลา Verizon ในการจัดเรียงสมุดโทรศัพท์ที่? 636 00:30:03,320 --> 00:30:06,170 เวลาเท่าไหร่มันใช้เวลาเรา การเรียงลำดับตัวเลขเหล่านี้เจ็ด? 637 00:30:06,170 --> 00:30:10,110 นั่นเป็นคำถามที่เราได้ ป่านนี้ละเว้นสมบูรณ์ 638 00:30:10,110 --> 00:30:12,330 >> จึงขอตอบคำถามนี้ตอนนี้ 639 00:30:12,330 --> 00:30:15,920 และเราทุกคนออกมาจากภาพยนตร์ตอนนี้ แต่เรามีลูกความเครียดบางอย่าง 640 00:30:15,920 --> 00:30:19,480 ถ้าบอกว่าแปดอาสาสมัคร จะไม่คิดร่วมงานกับเราได้ที่นี่? 641 00:30:19,480 --> 00:30:24,100 ให้เป็นไปข้างหน้าและทำวิธีการเกี่ยวกับ สี่ของคุณสามของคุณที่นี่? 642 00:30:24,100 --> 00:30:25,290 ได้รับใบหน้าใหม่บาง 643 00:30:25,290 --> 00:30:27,220 และสี่ของคุณมี? 644 00:30:27,220 --> 00:30:30,760 และ now-- ให้ไม่อคติตรงนี้และ หมายเลขแปดกว่าที่นี่ในท้ายที่สุด 645 00:30:30,760 --> 00:30:32,060 มาขึ้น 646 00:30:32,060 --> 00:30:32,560 ขวาทั้งหมด 647 00:30:32,560 --> 00:30:37,480 ดังนั้นสิ่งที่เรามีที่นี่ แต่ละท่านคือหมายเลข 648 00:30:37,480 --> 00:30:40,055 หากคุณต้องการที่จะไป ข้างหน้าจะใช้หมายเลขนี้ 649 00:30:40,055 --> 00:30:40,763 คุณชื่ออะไร? 650 00:30:40,763 --> 00:30:41,950 >> Artie: Artie 651 00:30:41,950 --> 00:30:43,100 >> DAVID ลัน: Artie โอเค 652 00:30:43,100 --> 00:30:44,297 คุณหมายเลข 1 653 00:30:44,297 --> 00:30:45,310 >> AMIN: อามิน 654 00:30:45,310 --> 00:30:46,060 DAVID ลัน: อามิน 655 00:30:46,060 --> 00:30:46,820 เดวิด 656 00:30:46,820 --> 00:30:47,530 คุณจำนวน 2 657 00:30:47,530 --> 00:30:49,100 และไปข้างหน้าในขณะที่ฉันมือ คุณแผ่นกระดาษ 658 00:30:49,100 --> 00:30:52,130 สายตัวเองขึ้นมาในหน้าของเพลง ยืนอยู่ในลำดับเดียวกับที่มีขึ้น 659 00:30:52,130 --> 00:30:52,660 >> แอนดี้: สวัสดี, แอนดี้ 660 00:30:52,660 --> 00:30:53,970 >> DAVID ลัน: แอนดี้มันเป็นเรื่องดีที่จะเห็นคุณ 661 00:30:53,970 --> 00:30:54,520 จำนวน 3 662 00:30:54,520 --> 00:30:55,310 >> JACOB: จาค็อบ 663 00:30:55,310 --> 00:30:56,760 >> DAVID ลัน: จาค็อบ, หมายเลข 4 664 00:30:56,760 --> 00:30:57,549 ยินดีต้อนรับบนเรือ 665 00:30:57,549 --> 00:30:58,090 GRANT: แกรนท์ 666 00:30:58,090 --> 00:30:58,881 DAVID ลัน: แกรนท์ 667 00:30:58,881 --> 00:31:00,348 จำนวน 5 668 00:31:00,348 --> 00:31:01,200 >> อลันนา: อลันนา 669 00:31:01,200 --> 00:31:02,766 >> DAVID ลัน: อลันนา, หมายเลข 6 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: ฟรานเซส 671 00:31:03,589 --> 00:31:04,880 DAVID ลัน: ฟรานเซสจำนวน 7 672 00:31:04,880 --> 00:31:05,200 และ? 673 00:31:05,200 --> 00:31:05,830 >> ราเชล: ราเชล 674 00:31:05,830 --> 00:31:06,815 >> DAVID ลัน: ราเชลจำนวน 8 675 00:31:06,815 --> 00:31:07,100 ขวาทั้งหมด 676 00:31:07,100 --> 00:31:08,766 ไปข้างหน้าและได้รับตัวเองในคำสั่งนี้ 677 00:31:08,766 --> 00:31:11,440 ให้ฉันใส่หนึ่งที่เหลือ ยืนเพลงในสถานที่ 678 00:31:11,440 --> 00:31:13,670 คุณไม่จำเป็นต้องยืนอยู่ที่ไหน 679 00:31:13,670 --> 00:31:14,170 ตกลง 680 00:31:14,170 --> 00:31:18,710 ไปข้างหน้าและเพียงแค่ใส่หมายเลขของคุณ ที่ผู้ชมจะได้เห็นพวกเขาใน 681 00:31:18,710 --> 00:31:20,340 เพลงยืนหันหน้าออก 682 00:31:20,340 --> 00:31:27,240 และหวังว่าครั้งแรกของเรา สติการตรวจสอบตรงนี้ 4, 2, 6 683 00:31:27,240 --> 00:31:27,890 โอ้ 684 00:31:27,890 --> 00:31:29,070 รอสักครู่ 685 00:31:29,070 --> 00:31:31,140 เราไม่ได้มี 8 686 00:31:31,140 --> 00:31:35,180 ฉันต้องการที่จะขับไล่ท่านออกจาก ตัวอย่างเช่นอย่างใด 687 00:31:35,180 --> 00:31:35,680 ฉบับที่ 688 00:31:35,680 --> 00:31:36,940 ไม่มีที่ตกลง 689 00:31:36,940 --> 00:31:37,890 ลองมาดูกัน 690 00:31:37,890 --> 00:31:38,880 เราสามารถทำเช่นนี้ 691 00:31:38,880 --> 00:31:39,440 Stand by 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 มีที่เราจะไป 694 00:31:45,740 --> 00:31:46,800 ที่ถูกต้อง 695 00:31:46,800 --> 00:31:47,360 ขวาทั้งหมด 696 00:31:47,360 --> 00:31:50,260 ดังนั้นตอนนี้เรามี 8, 1, 3 7, 5 697 00:31:50,260 --> 00:31:50,760 ตกลง 698 00:31:50,760 --> 00:31:51,360 ที่ดีเยี่ยม 699 00:31:51,360 --> 00:31:54,400 >> ดังนั้นคำถามที่อยู่ในมือเป็นที่ สิ่งที่ค่าใช้จ่ายและผ่านสิ่งที่วิธีการ 700 00:31:54,400 --> 00:31:58,580 สามารถเราจริงการเรียงลำดับตัวเลขเหล่านี้ที่นี่ เพื่อให้เราชนิดของสามารถทำงานไปข้างหลัง 701 00:31:58,580 --> 00:32:02,759 ในท้ายที่สุดและ decide-- มันจริงๆ ที่น่าประทับใจก็คือการที่มีประสิทธิภาพจริงๆ 702 00:32:02,759 --> 00:32:04,550 ที่ฉันสามารถแบ่งและ พิชิตสมุดโทรศัพท์ได้หรือไม่ 703 00:32:04,550 --> 00:32:06,716 มันมีประสิทธิภาพจริงๆที่ ผมสามารถแบ่งและพิชิต 704 00:32:06,716 --> 00:32:08,600 ชิ้นดิจิตอลเหล่านั้น กระดาษบนกระดาน 705 00:32:08,600 --> 00:32:14,500 ถ้าบางทีมันอาจจะเป็นไปค่าใช้จ่ายเรา โชคลาภในเวลาหรือพลังงานหรือ CPU รอบ 706 00:32:14,500 --> 00:32:17,340 ที่จะได้รับจริงข้อมูลของเรา ในบางเรียงลำดับ? 707 00:32:17,340 --> 00:32:18,930 จึงขอถามคำถามที่ 708 00:32:18,930 --> 00:32:22,077 >> ออกดังนั้นครั้งแรกที่ตัวเลขเหล่านี้ เพื่อสุ่มสวยมาก 709 00:32:22,077 --> 00:32:24,160 และผมจะนำเสนอ หนึ่งขั้นตอนวิธีหรือกระบวนการ 710 00:32:24,160 --> 00:32:25,970 โดยที่เราสามารถจัดเรียงคนเหล่านี้ 711 00:32:25,970 --> 00:32:28,100 ฉันจะเข้าใกล้ นี้สวยอย่างไร้เดียงสา 712 00:32:28,100 --> 00:32:30,730 และฉันจะรับรู้ ว่ามันเป็นชนิดของจำนวนมากสำหรับฉัน 713 00:32:30,730 --> 00:32:32,890 มัดใจของฉันรอบ ชุดข้อมูลทั้งหมดในครั้งเดียว 714 00:32:32,890 --> 00:32:33,640 แต่คุณรู้อะไรไหม 715 00:32:33,640 --> 00:32:37,450 ฉันจะทำให้บาง การแก้ไขเล็กน้อยที่ง่ายมาก 716 00:32:37,450 --> 00:32:41,152 4 และ 2 จะออกคำสั่งว่า เป้าหมายคือการไปจากที่ 1 ถึง 8 717 00:32:41,152 --> 00:32:41,860 เพื่อให้คุณรู้อะไรไหม 718 00:32:41,860 --> 00:32:43,776 ฉันจะมีคุณ พวกสลับถ้าคุณสลับ 719 00:32:43,776 --> 00:32:46,380 ตำแหน่งและร่างกาย ชิ้นส่วนของกระดาษ 720 00:32:46,380 --> 00:32:47,894 ตอนที่ 4 และ 6 เหล่านี้อยู่ในลำดับที่ 721 00:32:47,894 --> 00:32:49,060 ฉันจะออกจากผู้ที่เป็น 722 00:32:49,060 --> 00:32:50,227 6 และ 8 ผู้อยู่ในลำดับที่ 723 00:32:50,227 --> 00:32:51,185 จะปล่อยให้พวกเขาเป็น 724 00:32:51,185 --> 00:32:52,170 8 AND1, ออกคำสั่ง 725 00:32:52,170 --> 00:32:54,790 ถ้าคุณทั้งสองจะไม่คิดเปลี่ยน 726 00:32:54,790 --> 00:32:57,300 ตอนที่ 8 และ 3 ถ้าพวกคุณสามารถสลับ 727 00:32:57,300 --> 00:32:59,320 8 และ 7 ถ้าพวกคุณสามารถสลับ 728 00:32:59,320 --> 00:33:01,790 และ 8 และ 5 ถ้าพวกคุณสามารถสลับ 729 00:33:01,790 --> 00:33:03,980 >> ตอนนี้ฉันทำ? 730 00:33:03,980 --> 00:33:05,200 ไม่ชัดไม่ 731 00:33:05,200 --> 00:33:07,880 แต่ฉันได้ทำ สถานการณ์ที่ดีกว่าใช่มั้ย? 732 00:33:07,880 --> 00:33:09,430 สิ่งที่เป็นชื่อของคุณอีกครั้งจำนวน 8? 733 00:33:09,430 --> 00:33:10,055 >> ราเชล: ราเชล 734 00:33:10,055 --> 00:33:12,850 DAVID ลันดังนั้นราเชลมี ฟองได้อย่างมีประสิทธิภาพขึ้นสวยไกล 735 00:33:12,850 --> 00:33:15,660 ไปตลอดทางจนถึงจุดสิ้นสุดของ อาร์เรย์ของตัวเลขที่นี่ของฉัน 736 00:33:15,660 --> 00:33:17,310 และเพื่อให้ปัญหาที่จะแก้ไขชนิดของ 737 00:33:17,310 --> 00:33:21,670 ตอนนี้อย่างชัดเจน 2 ยังคงต้อง ย้ายบิตและ 4 และ 6 และ 1 738 00:33:21,670 --> 00:33:24,420 แต่ฉันดูเหมือนจะมีอากาศ เล็ก ๆ น้อย ๆ ใกล้ชิดกับการแก้ปัญหา 739 00:33:24,420 --> 00:33:26,790 จึงขอใช้เดียวกันนี้ แก้ปัญหาไร้เดียงสาอีกครั้ง 740 00:33:26,790 --> 00:33:27,690 2 และ 4, ตกลง 741 00:33:27,690 --> 00:33:28,810 4 และ 6, ตกลง 742 00:33:28,810 --> 00:33:29,930 6 และ 1, มมมม 743 00:33:29,930 --> 00:33:32,230 แลกเปลี่ยนกันเถอะ 744 00:33:32,230 --> 00:33:33,200 6 และ 3 มมมม 745 00:33:33,200 --> 00:33:34,420 แลกเปลี่ยนกันเถอะ 746 00:33:34,420 --> 00:33:35,580 6 และ 7 มีการตกลง 747 00:33:35,580 --> 00:33:36,590 7 และ 5 Nope 748 00:33:36,590 --> 00:33:37,790 แลกเปลี่ยนกันเถอะ 749 00:33:37,790 --> 00:33:38,470 และตอนที่ 7 และ 8 750 00:33:38,470 --> 00:33:39,862 และสิ่งที่ชื่อของคุณอีกครั้งหรือไม่ 751 00:33:39,862 --> 00:33:40,570 FRANCES: ฟรานเซส 752 00:33:40,570 --> 00:33:41,445 DAVID ลัน: ฟรานเซส 753 00:33:41,445 --> 00:33:44,230 ดังนั้นตอนนี้ฟรานเซสอยู่ในที่ดียิ่งขึ้น ตำแหน่งเพราะตอนนี้ที่ 7 และ 8 754 00:33:44,230 --> 00:33:46,440 มีฟองอย่างถูกต้องขึ้นไปด้านบน 755 00:33:46,440 --> 00:33:47,510 ดังนั้น 2 และ 4, ตกลง 756 00:33:47,510 --> 00:33:48,720 4 และ 1, แลกเปลี่ยนกันเถอะ 757 00:33:48,720 --> 00:33:50,410 4 และ 3 สลับกันเถอะ 758 00:33:50,410 --> 00:33:51,550 4 และ 6 คุณตกลง 759 00:33:51,550 --> 00:33:53,340 6 และ 5 ช่วยให้การแลกเปลี่ยนของ 760 00:33:53,340 --> 00:33:54,590 และตอนนี้คนเหล่านั้นเป็นสิ่งที่ดี 761 00:33:54,590 --> 00:33:55,780 เราเกือบจะมี 762 00:33:55,780 --> 00:33:57,706 2 และ 1, ออกคำสั่งเพื่อแลกเปลี่ยน 763 00:33:57,706 --> 00:33:59,080 และตอนนี้ให้ฉันจะตรวจสอบสุขภาพจิตดี 764 00:33:59,080 --> 00:34:03,080 2 และ 3, 3 และ 4, 4 และ 5, 5 และ 6, 6 และ 7, 8 765 00:34:03,080 --> 00:34:05,060 ตกลงดังนั้นเรากำลังทำ 766 00:34:05,060 --> 00:34:09,310 >> แต่ค่าใช้จ่ายในสิ่งที่ไม่ฉัน การเรียงลำดับตัวเลขเหล่านี้ที่นี่? 767 00:34:09,310 --> 00:34:13,960 ด้วยวิธีการหลายขั้นตอนที่ฉันไม่อาจ จะใช้เมื่อการเรียงลำดับคนเหล่านี้หรือไม่ 768 00:34:13,960 --> 00:34:15,710 ดีเราจะกลับมาที่คำถามว่า 769 00:34:15,710 --> 00:34:18,030 แต่ตรงไปตรงมาถ้าคุณมี เบื่อเล็ก ๆ น้อย ๆ ที่ 770 00:34:18,030 --> 00:34:22,270 ชนิดของการเปิดเผยในที่นี้ไม่ได้ อาจจะเป็นวิธีที่มีประสิทธิภาพมากที่สุด 771 00:34:22,270 --> 00:34:25,230 และแน่นอนตรงไปตรงมาผมเหงื่อออก ทั้งหมดขึ้นเดินไปมา 772 00:34:25,230 --> 00:34:26,639 ที่ไม่ได้รู้สึกว่ามีประสิทธิภาพโดยเฉพาะอย่างยิ่ง 773 00:34:26,639 --> 00:34:27,805 ดังนั้นลองอย่างอื่น 774 00:34:27,805 --> 00:34:31,870 ถ้าพวกคุณสามารถตั้งค่า ตัวเองเหล่านี้แปดค่า 775 00:34:31,870 --> 00:34:32,969 งานที่ดี 776 00:34:32,969 --> 00:34:36,570 >> ลองมาดูแบบดิจิทัลเพียง ช่วงเวลาก่อนที่เราจะพยายามอย่างอื่น 777 00:34:36,570 --> 00:34:38,179 สิ่งที่เกิดขึ้นเพียง 778 00:34:38,179 --> 00:34:41,330 ที่นี่คุณจะได้เห็น ภาพของเหล่านี้แปดมนุษย์ 779 00:34:41,330 --> 00:34:44,719 โดยสีฟ้าและสีแดง แถบแสดงตัวเลข 780 00:34:44,719 --> 00:34:46,670 บาร์สูง, จำนวนที่ใหญ่กว่า 781 00:34:46,670 --> 00:34:48,510 บาร์สั้น, ขนาดเล็กจำนวนมาก 782 00:34:48,510 --> 00:34:51,560 และสิ่งที่คุณจะได้เห็นใน ลำดับแบบสุ่มมากกว่าแปดของพวกเขา 783 00:34:51,560 --> 00:34:55,830 คุณจะเห็นแถบเหล่านี้ การเรียงลำดับตามขั้นตอนวิธีเดียวกันนั้น 784 00:34:55,830 --> 00:34:59,890 หรือชุดของคำสั่งที่ เราจะเรียกต่อจากนี้ไปการจัดเรียงฟอง 785 00:34:59,890 --> 00:35:04,000 เพื่อให้สังเกตเห็นทุกวินาทีหรือมากกว่านั้น สองแท่งจะส่องสว่างในสีแดง 786 00:35:04,000 --> 00:35:05,590 จะถูกเปรียบเทียบโดยคอมพิวเตอร์ 787 00:35:05,590 --> 00:35:08,630 แล้วถ้าแถบขนาดใหญ่และ บาร์เล็ก ๆ น้อย ๆ ที่ออกคำสั่ง 788 00:35:08,630 --> 00:35:11,220 พวกเขาจะถูกเปลี่ยนสำหรับฉัน 789 00:35:11,220 --> 00:35:15,120 >> ขณะนี้เป็นที่น่าเบื่ออย่างไม่น่าเชื่อ ดูนี้อย่างแน่นอน 790 00:35:15,120 --> 00:35:18,630 นานมาก แต่แจ้งให้ทราบล่วงหน้า takeaway-- บาร์ขนาดใหญ่ที่จะย้ายไปทางขวา 791 00:35:18,630 --> 00:35:20,460 บาร์เล็ก ๆ น้อย ๆ ที่จะย้ายไปทางซ้าย 792 00:35:20,460 --> 00:35:23,380 ให้ยกเลิกกระบวนการนี​​้ และความเร็วนี้ขึ้น 793 00:35:23,380 --> 00:35:27,330 จะเร็วมากดังนั้นเราสามารถทำได้ รับความรู้สึกที่ระดับสูงของสิ่งที่ 794 00:35:27,330 --> 00:35:29,970 แน่นอนการจัดเรียงฟองจะทำ 795 00:35:29,970 --> 00:35:33,150 อันที่จริงก็เดือดถึง ด้านขวามือของรายการ 796 00:35:33,150 --> 00:35:35,260 หรืออาเรย์, บาร์ขนาดใหญ่ 797 00:35:35,260 --> 00:35:40,020 และตรงกันข้ามบาร์เล็ก ๆ น้อย ๆ bubbling ทางของพวกเขาลงไปทางซ้าย 798 00:35:40,020 --> 00:35:42,950 แม้ว่าที่ก้าวเร็วขึ้น กว่าที่เราทำก่อนหน้านี้ 799 00:35:42,950 --> 00:35:45,850 ดังนั้นยากที่จะมองเห็นได้ด้วยมนุษย์ แต่เห็นว่าเป็นสิ่งที่แน่นอน 800 00:35:45,850 --> 00:35:46,540 ที่เกิดขึ้น 801 00:35:46,540 --> 00:35:49,110 >> แต่ลองพื้นฐาน วิธีการที่แตกต่างกันตอนนี้ 802 00:35:49,110 --> 00:35:52,387 ลองที่แตกต่างกัน อัลกอริทึมโดยเรามีคุณ 803 00:35:52,387 --> 00:35:59,640 คนเริ่มต้นในการเดิมเหล่านี้ ตำแหน่งซึ่งเป็นคำสั่งที่นี่ 804 00:35:59,640 --> 00:36:00,827 และขอให้ไปข้างหน้าขณะนี้ 805 00:36:00,827 --> 00:36:02,910 และฉันจะทำอะไรบางอย่าง ได้ง่ายใช่มั้ย? 806 00:36:02,910 --> 00:36:06,710 ในการหวนกลับ, การแลกเปลี่ยนคู่อีกครั้ง และฉลาดอีกครั้งเกือบจะเล็ก ๆ น้อย ๆ 807 00:36:06,710 --> 00:36:10,460 ลองทำสิ่งที่มากยิ่งขึ้นอย่างไร้เดียงสา, ซึ่งถ้าผมต้องการที่จะเรียงลำดับคนเหล่านี้ 808 00:36:10,460 --> 00:36:12,560 ให้ฉันเพียงแค่ให้มอง สำหรับองค์ประกอบที่เล็กที่สุด 809 00:36:12,560 --> 00:36:14,570 ดังนั้นตอนนี้, 4 จำนวนน้อยที่สุดที่ผมเคยเห็น 810 00:36:14,570 --> 00:36:15,695 ฉันจะจำไว้ว่า 811 00:36:15,695 --> 00:36:17,750 ไม่มี 2 จะดีกว่าและจำไว้ว่า 812 00:36:17,750 --> 00:36:20,730 1 ยังมีขนาดเล็ก 813 00:36:20,730 --> 00:36:21,970 3, 7, 5 814 00:36:21,970 --> 00:36:22,470 ตกลง 815 00:36:22,470 --> 00:36:23,750 One-- สิ่งที่ชื่อของคุณอีกครั้งหรือไม่ 816 00:36:23,750 --> 00:36:24,400 >> Artie: Artie 817 00:36:24,400 --> 00:36:24,610 >> DAVID ลัน: Artie 818 00:36:24,610 --> 00:36:25,460 ดังนั้น Artie ไปข้างหน้า 819 00:36:25,460 --> 00:36:27,043 ฉันจะดึงคุณออกมาจากแถว 820 00:36:27,043 --> 00:36:28,400 หากคุณสามารถกลับมาที่นี่ 821 00:36:28,400 --> 00:36:30,790 และฉันต้องการที่จะทำให้ห้องพักสำหรับเขา 822 00:36:30,790 --> 00:36:32,040 เรามีจุดตัดสินใจที่นี่ 823 00:36:32,040 --> 00:36:36,000 วิธีการที่เราอาจจะทำให้ห้องพักสำหรับการ Artie ที่นี่ ที่จุดเริ่มต้นที่จำนวน 1 เป็น? 824 00:36:36,000 --> 00:36:36,770 >> ผู้ชม: กะ 825 00:36:36,770 --> 00:36:38,950 >> DAVID ลัน: OK เรา สามารถเปลี่ยนทุกคน 826 00:36:38,950 --> 00:36:40,860 แต่นำเสนอการเพิ่มประสิทธิภาพ 827 00:36:40,860 --> 00:36:43,410 ที่ให้ความรู้สึกน่ารำคาญเล็ก ๆ น้อย ๆ สำหรับผมที่จะถามคนสี่คน 828 00:36:43,410 --> 00:36:44,620 ที่จะย้ายไปตลอดทางลง 829 00:36:44,620 --> 00:36:45,520 อะไรที่ฉันจะทำอย่างไร 830 00:36:45,520 --> 00:36:46,360 >> ผู้ชม: สลับพวกเขา 831 00:36:46,360 --> 00:36:46,850 >> DAVID ลัน: สวิทช์พวกเขา 832 00:36:46,850 --> 00:36:47,900 และสิ่งที่ชื่อของคุณอีกครั้งหรือไม่ 833 00:36:47,900 --> 00:36:48,441 >> JACOB: จาค็อบ 834 00:36:48,441 --> 00:36:50,330 DAVID ลัน: จาค็อบย้าย 835 00:36:50,330 --> 00:36:54,440 มากมีประสิทธิภาพมากขึ้นเพียงแค่มี จาค็อบสถานที่แลกเปลี่ยนกับ Artie, 836 00:36:54,440 --> 00:36:56,710 เมื่อเทียบกับการบังคับให้ ทั้งสี่ของคนเหล่านี้ 837 00:36:56,710 --> 00:36:58,734 ขอบคุณมากที่ ตำแหน่งที่ถูกต้องของพวกเขา 838 00:36:58,734 --> 00:37:01,150 มีอะไรที่ดีเกี่ยวกับ Artie ตอนนี้ เขาอยู่ในตำแหน่งที่ถูกต้องของเขา 839 00:37:01,150 --> 00:37:02,060 ลองทำเช่นนี้อีกครั้ง 840 00:37:02,060 --> 00:37:03,730 2 ว่าเป็นจำนวนน้อยที่สุดที่ผมเคยเห็น 841 00:37:03,730 --> 00:37:05,690 3, 7, 5 842 00:37:05,690 --> 00:37:06,190 ตกลง 843 00:37:06,190 --> 00:37:07,467 2 แน่นอนที่เล็กที่สุด 844 00:37:07,467 --> 00:37:08,550 จะได้ไม่ต้องทำงานใด ๆ 845 00:37:08,550 --> 00:37:09,320 ลองทำมันอีกครั้ง 846 00:37:09,320 --> 00:37:10,070 6 847 00:37:10,070 --> 00:37:10,640 ที่เล็กที่สุด? 848 00:37:10,640 --> 00:37:11,140 8 849 00:37:11,140 --> 00:37:11,590 Nope 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 ooh 852 00:37:12,220 --> 00:37:13,420 ให้ฉันจำ 4 853 00:37:13,420 --> 00:37:13,950 3 854 00:37:13,950 --> 00:37:15,110 ให้ฉันจำได้ว่า 3 855 00:37:15,110 --> 00:37:16,080 7, 5 856 00:37:16,080 --> 00:37:18,490 จำนวนน้อยที่สุดฉันได้ เห็นที่ผ่านนี้คือ 3 857 00:37:18,490 --> 00:37:20,340 หากคุณต้องการออกมา 858 00:37:20,340 --> 00:37:21,986 ที่เราจะไปทำให้คุณ? 859 00:37:21,986 --> 00:37:22,860 และสิ่งที่ชื่อของคุณ? 860 00:37:22,860 --> 00:37:23,530 >> อลันนา: อลันนา 861 00:37:23,530 --> 00:37:25,780 >> DAVID ลัน: อลันนาเราไม่ จะต้องขับไล่คุณ 862 00:37:25,780 --> 00:37:28,670 แต่ที่มีประสิทธิภาพมากขึ้น เพียงแค่สลับสองคน 863 00:37:28,670 --> 00:37:31,850 มากกว่าที่จะมีคนหลายคน จริง ๆ แล้วก้าวเท้าเลี่ยงไป 864 00:37:31,850 --> 00:37:32,850 ตอนนี้ขอทำเช่นนี้อีกครั้ง 865 00:37:32,850 --> 00:37:34,980 ฉันจะเลือก 4 เพื่อให้มาออก 866 00:37:34,980 --> 00:37:36,540 และผู้ที่จะย้าย? 867 00:37:36,540 --> 00:37:37,750 หมายเลข 8 แน่นอน 868 00:37:37,750 --> 00:37:40,260 ถ้าตอนนี้ผมพบว่าจำนวน 5 มาออก 869 00:37:40,260 --> 00:37:42,104 หมายเลข 8 จะได้รับการขับไล่อีกครั้ง 870 00:37:42,104 --> 00:37:43,770 ตอนนี้ผมจะไปหาหมายเลข 6 ในสถานที่ 871 00:37:43,770 --> 00:37:44,410 7 ในสถานที่ 872 00:37:44,410 --> 00:37:45,080 8 ในสถานที่ 873 00:37:45,080 --> 00:37:48,590 >> สิ่งที่เราได้ทำขณะนี้คือ สิ่งที่เรียกว่าการจัดเรียงเลือก 874 00:37:48,590 --> 00:37:52,560 และถ้าเราเห็นภาพนี้ก็ จะรู้สึกแตกต่างกันเล็กน้อย 875 00:37:52,560 --> 00:37:56,800 ให้เป็นไปข้างหน้าและจากนี้ เมนูที่นี่ visualization-- นี้ 876 00:37:56,800 --> 00:38:02,920 ขอเปลี่ยนยา่กมาใน Firefox 877 00:38:02,920 --> 00:38:07,610 ลองเปลี่ยนนี้ในการเรียงลำดับตัวเลือก 878 00:38:07,610 --> 00:38:11,830 และให้ความเร็วขึ้นเช่นเดิม และเริ่มการแสดงตอนนี้ 879 00:38:11,830 --> 00:38:13,990 และขั้นตอนวิธีนี้มี ความรู้สึกที่แตกต่างกันไป 880 00:38:13,990 --> 00:38:16,480 ในแต่ละซ้ำตรงไปตรงมา ก็จะยิ่งตรงไปตรงมามากขึ้น 881 00:38:16,480 --> 00:38:18,385 ฉันแค่เลือกองค์ประกอบที่เล็กที่สุด 882 00:38:18,385 --> 00:38:21,510 ตอนนี้ตรงไปตรงมาผมได้เล็ก ๆ น้อย ๆ โชคดีที่ เวลาในการที่จะถูกจัดเรียงอย่างรวดเร็ว 883 00:38:21,510 --> 00:38:22,660 องค์ประกอบที่เป็นแบบสุ่ม 884 00:38:22,660 --> 00:38:25,520 มันไม่ได้เป็นอย่างที่เราจะได้ในที่สุด ดูพื้นฐานได้เร็วขึ้น 885 00:38:25,520 --> 00:38:29,400 แต่ขอดูสามและครั้งสุดท้าย วิธีการที่นี่เป็นสิ่งที่เกิดขึ้น 886 00:38:29,400 --> 00:38:36,230 จึงขอไปข้างหน้าและการตั้งค่าพวกคุณ เป็นครั้งสุดท้ายที่จะอยู่ในคำสั่งนี้ที่นี่ 887 00:38:36,230 --> 00:38:38,450 >> และตอนนี้ฉันกำลังจะไป เป็นเพียงเล็กน้อยที่ฉลาดมากขึ้น 888 00:38:38,450 --> 00:38:40,220 เพียงเพื่อออกรอบขั้นตอนวิธีการของเรา 889 00:38:40,220 --> 00:38:41,230 ฉันจะทำเช่นนี้ 890 00:38:41,230 --> 00:38:43,140 ฉันจะไม่ไป กลับมามาก 891 00:38:43,140 --> 00:38:44,900 ตรงไปตรงมาฉันเหนื่อยของ ทุก traversing นี้ 892 00:38:44,900 --> 00:38:47,691 ฉันแค่ไปที่จะใช้สิ่งที่ฉัน ให้ที่จุดเริ่มต้นของรายการที่ 893 00:38:47,691 --> 00:38:49,460 และฉันจะต้องเรียงลำดับ ที่แล้วและมี 894 00:38:49,460 --> 00:38:50,140 ดังนั้นที่นี่เรามี 895 00:38:50,140 --> 00:38:51,030 จำนวน 4 896 00:38:51,030 --> 00:38:53,680 ฉันจะใส่หมายเลข 4 ในรายการเรียงลำดับ 897 00:38:53,680 --> 00:38:54,180 เสร็จแล้ว 898 00:38:54,180 --> 00:38:58,300 ฉันเรียกร้องขณะนี้และเพียงเพื่อให้มากขึ้น ที่ชัดเจนเป็นส่วนหนึ่งของรายการของฉันนี้จะถูกจัดเรียง 899 00:38:58,300 --> 00:39:02,610 เป็นชนิดของการเรียกร้องโง่ แต่แน่นอน 4 จะถูกจัดเรียงในรายการของขนาดหนึ่ง 900 00:39:02,610 --> 00:39:04,210 ตอนนี้ผมกำลังจะไปใช้เวลาอยู่กับจำนวน 2 901 00:39:04,210 --> 00:39:07,670 หมายเลข 2 ตอนนี้ผมจะไป ใส่ลงในสถานที่ที่เหมาะสม 902 00:39:07,670 --> 00:39:08,680 เพื่อที่จะเป็น 2? 903 00:39:08,680 --> 00:39:09,824 เห็นได้ชัดกว่าที่นี่ 904 00:39:09,824 --> 00:39:11,490 เพื่อไปข้างหน้าและย้ายกลับถ้าคุณสามารถ 905 00:39:11,490 --> 00:39:14,406 และทำไมไม่พวกคุณเพียงแค่ใช้ เพลงของคุณยืนอยู่กับคุณในเวลานี้ 906 00:39:14,406 --> 00:39:17,020 และขอฝืนใส่คุณ เป็นจุดเริ่มต้นของรายการ 907 00:39:17,020 --> 00:39:17,936 การทำงานมากขึ้นเพื่อให้เล็ก ๆ น้อย ๆ 908 00:39:17,936 --> 00:39:20,890 ผมต้องย้ายจาค็อบรอบ และสิ่งที่ชื่อของคุณ? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: อามิน 910 00:39:21,420 --> 00:39:22,270 >> DAVID ลัน: อามิน 911 00:39:22,270 --> 00:39:24,350 แต่อย่างน้อยผมไม่ได้กลับไปมา 912 00:39:24,350 --> 00:39:25,739 ฉันแค่สละสิ่งที่เป็นฉันไป 913 00:39:25,739 --> 00:39:27,530 ฉันแค่ใส่พวกเขา ในสถานที่ที่เหมาะสม 914 00:39:27,530 --> 00:39:29,220 6 นี้เป็นจริงง่ายสวย 915 00:39:29,220 --> 00:39:31,510 ลองใส่คุณไปที่นั่นถ้าคุณ แค่อยากจะย้ายไปเล็กน้อย 916 00:39:31,510 --> 00:39:32,870 หมายเลข 8 ยังง่ายสวย 917 00:39:32,870 --> 00:39:33,741 ตรงนั้น 918 00:39:33,741 --> 00:39:34,240 บ้าที่สุด 919 00:39:34,240 --> 00:39:37,590 จำนวน 1 เราไม่สามารถเพียงแค่ สลับกับอามินนี่ 920 00:39:37,590 --> 00:39:39,340 เพราะที่เกิด เลอะคำสั่ง 921 00:39:39,340 --> 00:39:40,660 ดังนั้นเราจะต้องเป็นเพียงเล็กน้อยที่ฉลาดมากขึ้น 922 00:39:40,660 --> 00:39:42,770 ดังนั้น Artie ถ้าคุณสามารถทำได้ สำรองสักครู่ 923 00:39:42,770 --> 00:39:46,550 ให้เป็นไปข้างหน้าและเปลี่ยนตอนนี้ ซึ่งแตกต่างจากอัลกอริทึมที่ก่อนหน้านี้ของเรา 924 00:39:46,550 --> 00:39:50,910 ที่จะทำให้ห้องพักสำหรับการ Artie ขวาที่นี่ที่จุดเริ่มต้น 925 00:39:50,910 --> 00:39:54,690 ดังนั้นในตอนท้ายของวันที่ผมชนิดของ ทำในสิ่งที่ฉันต้องการที่จะหลีกเลี่ยงก่อนที่จะ 926 00:39:54,690 --> 00:39:57,770 และอื่น ๆ ขั้นตอนวิธีของฉันคือการจัดเรียง ของกลับปัญญา 927 00:39:57,770 --> 00:39:59,070 จากสิ่งที่มันเป็นมา แต่เดิม 928 00:39:59,070 --> 00:40:01,240 ฉันแค่ทำขยับ ที่จุดที่แตกต่างกัน 929 00:40:01,240 --> 00:40:02,291 ตอนนี้ฉันอยู่ที่ 3 930 00:40:02,291 --> 00:40:02,790 โอ้แช่ง 931 00:40:02,790 --> 00:40:04,039 เราต้องทำงานมากขึ้นอีกครั้ง 932 00:40:04,039 --> 00:40:05,060 จึงขอผลักดันให้คุณออก 933 00:40:05,060 --> 00:40:09,360 ขอย้าย 8, 6, 4-- โอ้ oh-- และ 3 จะไปอยู่ที่นั่น 934 00:40:09,360 --> 00:40:11,490 เงินฝากออมทรัพย์เพื่อที่เล็กน้อยอย่างน้อยเวลานี้ 935 00:40:11,490 --> 00:40:13,100 7 ไม่ได้ทำงานมากเกินไปที่จะทำ 936 00:40:13,100 --> 00:40:15,370 ดังนั้นถ้าคุณต้องการที่จะปรากฏ กลับมาให้คุณใส่ 937 00:40:15,370 --> 00:40:17,440 และสุดท้าย, 5, ถ้าคุณ ต้องการที่จะปรากฏหลังเรา 938 00:40:17,440 --> 00:40:22,610 ต้องการที่จะเปลี่ยนคุณให้คุณ คุณจนกว่าห้าอยู่ในสถานที่ 939 00:40:22,610 --> 00:40:25,670 >> ดังนั้นตอนนี้ที่จะเห็นนี้ ระดับสูงกราฟิก 940 00:40:25,670 --> 00:40:31,080 ขอทำขั้นตอนนี้ ภาพหนึ่งเวลาเพิ่มเติม 941 00:40:31,080 --> 00:40:33,580 ดังนั้นเรานี้จะเรียกการจัดเรียงแทรก 942 00:40:33,580 --> 00:40:37,700 เราจะทำงานได้เช่นเดียวกับ ได้อย่างรวดเร็วและเริ่มต้นได้ที่นี่ 943 00:40:37,700 --> 00:40:39,580 และมันก็มีความรู้สึกที่แตกต่างกัน 944 00:40:39,580 --> 00:40:42,180 มันเรียงลำดับของการเริ่มดีขึ้นและ ดีกว่า แต่ก็ไม่เคยที่สมบูรณ์แบบ 945 00:40:42,180 --> 00:40:44,630 จนกว่าฉันจะไปในและราบรื่นในช่องว่างเหล่านั้น 946 00:40:44,630 --> 00:40:47,860 เพราะอีกครั้งฉันก็แค่เอาสิ่งที่ ฉันได้รับจากซ้ายไปขวา 947 00:40:47,860 --> 00:40:50,350 ดังนั้นผมจึงไม่ได้โชคดีอย่างนั้น ว่าทุกอย่างเป็นที่สมบูรณ์แบบ 948 00:40:50,350 --> 00:40:54,190 นั่นเป็นเหตุผลที่เรามีเล็ก ๆ น้อย ๆ เหล่านี้ mispositions ว่าเราคงที่เมื่อเวลาผ่านไป 949 00:40:54,190 --> 00:40:58,890 >> เพื่อให้ทุกขั้นตอนวิธีการเหล่านี้ดูเหมือนจะ ทำงานก้าวที่แตกต่างกันเล็กน้อย 950 00:40:58,890 --> 00:41:02,030 ในความเป็นจริงที่คุณจะพูดได้ก็คือ ที่ดีที่สุดหรือเร็วที่สุดเพื่อให้ห่างไกล? 951 00:41:02,030 --> 00:41:03,450 การจัดเรียงฟองแรก? 952 00:41:03,450 --> 00:41:05,000 การจัดเรียงตัวเลือกที่สองหรือไม่ 953 00:41:05,000 --> 00:41:08,450 แทรกเรียงลำดับที่สามหรือไม่ 954 00:41:08,450 --> 00:41:10,710 ผมได้ยินบางประเภทตัวเลือก 955 00:41:10,710 --> 00:41:13,280 ความคิดอื่น ๆ 956 00:41:13,280 --> 00:41:16,880 >> ดังนั้นจึงปรากฎว่า ทั้งหมดของขั้นตอนวิธีการเหล่านี้ 957 00:41:16,880 --> 00:41:22,400 เป็นพื้นฐานเช่นเดียวกับที่มีประสิทธิภาพเป็น แต่ละ other-- หรือตรงกันข้ามเช่นเดียวกับ 958 00:41:22,400 --> 00:41:25,980 ไม่มีประสิทธิภาพเช่นกัน เพราะเราสามารถทำพื้นฐาน 959 00:41:25,980 --> 00:41:28,120 ดีกว่าทั้งสาม อัลกอริทึมเหล่านี้ 960 00:41:28,120 --> 00:41:29,990 และที่บิตของการโกหกสีขาวอีกด้วย 961 00:41:29,990 --> 00:41:32,580 เมื่อฉันพูดมีประสิทธิภาพ หรือไม่มีประสิทธิภาพ 962 00:41:32,580 --> 00:41:35,040 ที่อย่างน้อยสำหรับ ค่ามีขนาดใหญ่สุดของ n 963 00:41:35,040 --> 00:41:38,450 เมื่อเรามีเพียงแปดคนที่นี่ หรืออาจจะ 50 หรือดังนั้นบาร์บนหน้าจอ 964 00:41:38,450 --> 00:41:41,645 คุณอย่างจะสังเกตเห็นความแตกต่าง ในหมู่ที่สามเหล่านี้อัลกอริทึม 965 00:41:41,645 --> 00:41:44,020 แต่เป็น n จำนวนคนที่ หรือจำนวนของตัวเลข 966 00:41:44,020 --> 00:41:46,350 หรือจำนวนของคนที่อยู่ในโทรศัพท์ หนังสือเล่มหรือจำนวนของหน้าเว็บ 967 00:41:46,350 --> 00:41:48,230 ในฐานข้อมูลของกูเกิ้ล ได้รับที่ใหญ่กว่าและใหญ่กว่า 968 00:41:48,230 --> 00:41:51,650 เราจะเห็นว่าทั้งสามเหล่านี้ อัลกอริทึมเป็นจริงสวยดี 969 00:41:51,650 --> 00:41:54,060 และเราสามารถทำพื้นฐาน ที่ดีกว่านั้น 970 00:41:54,060 --> 00:41:56,830 >> ลองมาดูในที่สุด ในสิ่งที่อัลกอริทึมเหล่านี้อาจ 971 00:41:56,830 --> 00:41:59,520 เสียงเหมือนใน บริบทของบางคนอื่น ๆ 972 00:41:59,520 --> 00:42:03,550 เช่นกันโดยวิธีการนี​​้ การแสดงที่นี่ 973 00:42:03,550 --> 00:42:06,860 ที่จะแนะนำให้เรา จำนวนของอัลกอริทึม 974 00:42:06,860 --> 00:42:10,330 ให้เป็นไปข้างหน้าและแสดงความยินดีกับ ผู้เข้าร่วมของเราที่นี่ทุกคน 975 00:42:10,330 --> 00:42:11,690 แยกตัวเองเป็นอย่างดี 976 00:42:11,690 --> 00:42:15,124 หากคุณต้องการที่จะใช้เป็นของขวัญพรากจากกัน 977 00:42:15,124 --> 00:42:16,540 คุณสามารถเก็บหมายเลขของคุณได้เป็นอย่างดี 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 และสิ่งที่คุณจะเห็น หรือค่อนข้างได้ยินตอนนี้ 980 00:42:22,520 --> 00:42:25,710 ก็คือว่าในขณะที่เราใส่เสียง แต่ละแถบเหล่านี้ 981 00:42:25,710 --> 00:42:28,660 และเชื่อมโยงเข้ากับซอฟแวร์ ความถี่ที่แตกต่างกันของเสียง 982 00:42:28,660 --> 00:42:33,970 คุณสามารถมัดใจ audioly มากขึ้นของคุณ รอบสิ่งที่แต่ละสิ่งเหล่านี้ 983 00:42:33,970 --> 00:42:34,470 ลักษณะเหมือน 984 00:42:34,470 --> 00:42:39,325 คนแรกที่จะเรียงลำดับการแทรก 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> นี้จะเรียงลำดับฟอง 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> การจัดเรียงตัวเลือก 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> สิ่งที่เรียกว่าการจัดเรียงเวียน 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome การจัดเรียง 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> ที่มันสำหรับ CS50 1000 00:44:09,430 --> 00:44:13,360 เราจะเห็นคุณในวันพุธที่ 1001 00:44:13,360 --> 00:44:16,671 >> บรรยาย: และตอนนี้ "ลึก ความคิด "โดย Daven อัม 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 มันเป็นห่วงทำไม? 1004 00:44:21,590 --> 00:44:23,200 ทำไมไม่ทำให้ดีขึ้นได้อย่างไร 1005 00:44:23,200 --> 00:44:25,970 ฉันต้องการให้วงห้า 1006 00:44:25,970 --> 00:44:28,720 >> [หัวเราะ]