1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:00,460 >> DAVID ลัน: สิทธิทั้งหมด 3 00:00:00,460 --> 00:00:01,094 พวกเรากลับมาแล้ว. 4 00:00:01,094 --> 00:00:04,260 ดังนั้นในส่วนนี้ในการเขียนโปรแกรมสิ่งที่ ผมคิดว่าเราจะทำคือการผสมผสานของสิ่งต่างๆ 5 00:00:04,260 --> 00:00:06,340 หนึ่งทำนิ​​ด ๆ หน่อย บางสิ่งบางอย่าง Hands-on, 6 00:00:06,340 --> 00:00:08,690 แม้จะใช้ขี้เล่นมากขึ้น environment-- การเขียนโปรแกรม 7 00:00:08,690 --> 00:00:11,620 หนึ่งที่บ่งชี้ของ ตรงชนิดของความคิด 8 00:00:11,620 --> 00:00:14,220 เราได้รับการพูดคุยเกี่ยวกับ แต่เล็ก ๆ น้อย ๆ อย่างเป็นทางการ 9 00:00:14,220 --> 00:00:18,200 สองดูที่บางส่วนของ วิธีการทางเทคนิคเพิ่มเติม 10 00:00:18,200 --> 00:00:21,520 ที่เป็นโปรแกรมเมอร์จริงจะแก้ ปัญหาเช่นปัญหาในการค้นหา 11 00:00:21,520 --> 00:00:24,530 ที่เรามองที่ก่อนและ นอกจากนี้ยังมีพื้นฐานมากขึ้น 12 00:00:24,530 --> 00:00:26,020 ปัญหาที่น่าสนใจของการเรียงลำดับ 13 00:00:26,020 --> 00:00:28,840 >> เราเพียง แต่สันนิษฐานว่าจากที่ได้รับไป ว่าหนังสือเล่มโทรศัพท์ที่ได้รับการจัดเรียง 14 00:00:28,840 --> 00:00:31,980 แต่ที่อยู่คนเดียวเป็นจริงชนิดของ ปัญหาหนักด้วยวิธีการที่แตกต่างกัน 15 00:00:31,980 --> 00:00:32,479 จะแก้ปัญหาได้ 16 00:00:32,479 --> 00:00:34,366 ดังนั้นเราจะใช้เหล่านี้เป็น ระดับของปัญหา 17 00:00:34,366 --> 00:00:36,740 ตัวแทนของสิ่งที่ อาจได้รับการแก้ไขโดยทั่วไป 18 00:00:36,740 --> 00:00:38,980 และจากนั้นเราจะพูดคุย เกี่ยวกับในรายละเอียดบางสิ่ง 19 00:00:38,980 --> 00:00:42,360 จะเรียกว่าข้อมูล structures-- วิธีที่นักเล่นเช่นรายการเชื่อมโยง 20 00:00:42,360 --> 00:00:46,290 และตารางแฮชและต้นไม้ที่ โปรแกรมเมอร์จะจริง 21 00:00:46,290 --> 00:00:48,890 การใช้งานและโดยทั่วไปใช้ บนไวท์บอร์ดในการวาด 22 00:00:48,890 --> 00:00:51,840 ภาพของสิ่งที่เขาหรือเธอ วาดภาพสำหรับการดำเนินการ 23 00:00:51,840 --> 00:00:52,980 ชิ้นส่วนของซอฟต์แวร์บาง 24 00:00:52,980 --> 00:00:55,130 >> เพื่อขอทำมือในส่วนแรก 25 00:00:55,130 --> 00:01:00,090 ดังนั้นเพียงแค่ได้รับในมือของคุณสกปรกกับ สภาพแวดล้อมที่เรียกว่า scratch.mit.edu 26 00:01:00,090 --> 00:01:02,636 นี้เป็นเครื่องมือที่เราใช้ ในชั้นเรียนระดับปริญญาตรีของเรา 27 00:01:02,636 --> 00:01:04,510 แม้ว่าจะได้รับการออกแบบ สำหรับทุกวัย 12 ขึ้นไป 28 00:01:04,510 --> 00:01:07,570 เราใช้มันสำหรับขึ้น ส่วนหนึ่งของที่ไม่น้อย 29 00:01:07,570 --> 00:01:10,020 เพราะมันเป็นความสุขสนุกสนาน ทางกราฟิกของการเรียนรู้ 30 00:01:10,020 --> 00:01:12,160 บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เกี่ยวกับการเขียนโปรแกรม 31 00:01:12,160 --> 00:01:17,600 ดังนั้นมุ่งหน้าไปยัง URL ที่ที่คุณ จะเห็นหน้ามากเช่นนี้ 32 00:01:17,600 --> 00:01:23,330 และไปข้างหน้าและคลิก เข้าร่วมกับรอยขีดข่วนที่มุมขวาบน 33 00:01:23,330 --> 00:01:28,300 และเลือกชื่อผู้ใช้และ รหัสผ่านและในที่สุดได้รับตัวเอง 34 00:01:28,300 --> 00:01:29,970 account-- scratch.mit.edu 35 00:01:29,970 --> 00:01:32,165 36 00:01:32,165 --> 00:01:34,665 ฉันคิดว่าฉันใช้นี้เป็น โอกาสแรกที่แสดงนี้ 37 00:01:34,665 --> 00:01:39,120 คำถามขึ้นมาในช่วงพัก เกี่ยวกับสิ่งที่รหัสจริงดูเหมือน 38 00:01:39,120 --> 00:01:41,315 และเราได้พูดคุย ในช่วงพักเกี่ยวกับ C ที่ 39 00:01:41,315 --> 00:01:45,060 ใน particular-- โดยเฉพาะอย่างยิ่ง ระดับที่ต่ำกว่าในภาษาที่เก่า 40 00:01:45,060 --> 00:01:47,750 และผมก็ไม่ได้อย่างรวดเร็ว ค้นหาของ Google เพื่อค้นหารหัส C 41 00:01:47,750 --> 00:01:51,574 สำหรับการค้นหาไบนารีขั้นตอนวิธีการที่เรา ใช้ในการค้นหาสมุดโทรศัพท์ว่าก่อนหน้านี้ 42 00:01:51,574 --> 00:01:54,240 ตัวอย่างนี้โดยเฉพาะอย่างยิ่งของหลักสูตร ไม่ได้ค้นหาสมุดโทรศัพท์ 43 00:01:54,240 --> 00:01:57,840 มันเป็นเพียงแค่การค้นหาทั้งกลุ่ม ตัวเลขในหน่วยความจำของคอมพิวเตอร์ 44 00:01:57,840 --> 00:02:01,000 แต่ถ้าคุณต้องการเพียงแค่ได้รับภาพ ความรู้สึกของสิ่งที่เกิดขึ้นจริงในการเขียนโปรแกรม 45 00:02:01,000 --> 00:02:05,370 ภาษาดูเหมือนว่ามันดู บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่นนี้ 46 00:02:05,370 --> 00:02:09,759 ดังนั้นจึงเป็นประมาณ 20 บวก 30 หรือดังนั้นสายรหัส 47 00:02:09,759 --> 00:02:12,640 แต่การสนทนาเรา ได้มีการแบ่งมากกว่า 48 00:02:12,640 --> 00:02:16,000 เป็นเรื่องเกี่ยวกับวิธีการนี​​้จริง ได้รับการปรับเปลี่ยนไปศูนย์และคน 49 00:02:16,000 --> 00:02:19,200 และถ้าคุณไม่สามารถย้อนกลับไปเพียงว่า ประมวลผลและไปจากศูนย์และคน 50 00:02:19,200 --> 00:02:20,210 กลับไปที่รหัส 51 00:02:20,210 --> 00:02:22,620 >> แต่น่าเสียดายที่กระบวนการ เป็นกระแสเพื่อให้ 52 00:02:22,620 --> 00:02:24,890 ว่ามันเป็นจำนวนมากพูดง่ายกว่าทำ 53 00:02:24,890 --> 00:02:29,400 ฉันเดินไปข้างหน้าและหันจริง โปรแกรมที่ไบนารีค้นหา 54 00:02:29,400 --> 00:02:32,700 เข้ามาในศูนย์และคนโดยวิธีการ โปรแกรมที่เรียกว่าคอมไพเลอร์ที่ผม 55 00:02:32,700 --> 00:02:34,400 เกิดขึ้นจะมีที่นี่ตอนบน Mac ของฉัน 56 00:02:34,400 --> 00:02:37,850 และถ้าคุณดูที่หน้าจอ ที่นี่เน้นเฉพาะ 57 00:02:37,850 --> 00:02:43,520 เหล่านี้กลางหกคอลัมน์เท่านั้น คุณจะเห็นศูนย์เท่านั้นและคน 58 00:02:43,520 --> 00:02:48,290 และผู้ที่มีเลขศูนย์และคนที่ เขียนตรงที่โปรแกรมการค้นหา 59 00:02:48,290 --> 00:02:53,720 >> และเพื่อให้ก้อนห้าบิตแต่ละ แต่ละไบต์ของศูนย์และคนที่นี่ 60 00:02:53,720 --> 00:02:57,310 แทนคำแนะนำบางอย่าง โดยทั่วไปภายในของคอมพิวเตอร์ 61 00:02:57,310 --> 00:03:00,730 และในความเป็นจริงถ้าคุณเคยได้ยิน สโลแกนการตลาด "อินเทลภายใน" - ว่า 62 00:03:00,730 --> 00:03:04,610 แน่นอนก็หมายความว่าคุณมี Intel CPU หรือสมองภายในเครื่องคอมพิวเตอร์ 63 00:03:04,610 --> 00:03:08,000 และสิ่งที่หมายถึงการเป็นซีพียู ว่าคุณมีชุดคำสั่ง 64 00:03:08,000 --> 00:03:08,840 เพื่อที่จะพูด 65 00:03:08,840 --> 00:03:11,620 >> ทุก CPU ในโลกหลายแห่ง พวกเขาทำโดย Intel วันนี้ 66 00:03:11,620 --> 00:03:13,690 เข้าใจแน่นอน จำนวนคำแนะนำ 67 00:03:13,690 --> 00:03:18,690 และคำแนะนำผู้ที่มีระดับต่ำดังนั้น ทั้งเพิ่มจำนวนทั้งสองเข้าด้วยกัน 68 00:03:18,690 --> 00:03:22,560 คูณจำนวนทั้งสองเข้าด้วยกัน ย้ายชิ้นส่วนของข้อมูลนี้จากที่นี่ 69 00:03:22,560 --> 00:03:27,340 เดินทางมาที่นี่ในหน่วยความจำบันทึกนี้ ข้อมูลจากที่นี่ไปที่นี่ในหน่วยความจำ 70 00:03:27,340 --> 00:03:32,200 และอื่น ๆ เพื่อให้ forth-- มาก ระดับต่ำรายละเอียดอิเล็กทรอนิกส์เกือบ 71 00:03:32,200 --> 00:03:34,780 แต่กับคนทางคณิตศาสตร์ การดำเนินงานควบคู่ 72 00:03:34,780 --> 00:03:37,410 กับสิ่งที่เรากล่าวก่อนหน้านี้ เป็นตัวแทนของข้อมูล 73 00:03:37,410 --> 00:03:40,450 เป็นศูนย์และคนสามารถ คุณสร้างขึ้นมาทุกอย่าง 74 00:03:40,450 --> 00:03:44,180 ที่คอมพิวเตอร์สามารถทำวันนี้ไม่ว่าจะเป็น มันเป็นต้นฉบับกราฟิกดนตรี 75 00:03:44,180 --> 00:03:45,580 หรือมิฉะนั้น 76 00:03:45,580 --> 00:03:49,450 >> ดังนั้นนี่เป็นเรื่องง่ายมากที่จะได้รับ หายไปในวัชพืชได้อย่างรวดเร็ว 77 00:03:49,450 --> 00:03:52,150 และมีจำนวนมาก ความท้าทายกับการสร้างประโยค 78 00:03:52,150 --> 00:03:56,630 โดยถ้าคุณทำที่ง่าย โง่ของความผิดพลาดไม่มีโปรแกรม 79 00:03:56,630 --> 00:03:57,860 จะทำงานใด ๆ 80 00:03:57,860 --> 00:04:00,366 และอื่น ๆ แทนการใช้ ภาษาเช่น C เช้านี้ 81 00:04:00,366 --> 00:04:02,240 ฉันคิดว่ามันจะเป็น สนุกมากขึ้นที่จะทำจริง 82 00:04:02,240 --> 00:04:04,840 บางสิ่งบางอย่างที่มองเห็นได้มากขึ้นซึ่ง ในขณะที่ออกแบบมาสำหรับเด็ก 83 00:04:04,840 --> 00:04:08,079 เป็นจริงการแสดงออกที่สมบูรณ์แบบ ของการเขียนโปรแกรมที่เกิดขึ้นจริง 84 00:04:08,079 --> 00:04:10,370 language-- เพิ่งเกิดขึ้น ใช้ภาพแทนข้อความ 85 00:04:10,370 --> 00:04:11,710 เพื่อเป็นตัวแทนของความคิดเหล่านั้น 86 00:04:11,710 --> 00:04:15,470 >> ดังนั้นเมื่อคุณมีแน่นอน บัญชีผู้ใช้บน scratch.mit.edu, 87 00:04:15,470 --> 00:04:21,070 คลิกที่ปุ่มสร้าง ที่ด้านซ้ายบนของเว็บไซต์ 88 00:04:21,070 --> 00:04:24,620 และคุณจะเห็นสภาพแวดล้อมเช่น หนึ่งฉันจะเห็นบนหน้าจอของฉัน 89 00:04:24,620 --> 00:04:26,310 ที่นี่ 90 00:04:26,310 --> 00:04:29,350 และเราจะใช้จ่ายเพียงเล็กน้อย บิตของเวลาในการเล่นที่นี่ 91 00:04:29,350 --> 00:04:34,080 ลองมาดูว่าเราจะไม่สามารถแก้ปัญหาทั้งหมด ปัญหาที่เกิดขึ้นร่วมกันในวิธีการดังต่อไปนี้ 92 00:04:34,080 --> 00:04:39,420 >> ดังนั้นสิ่งที่คุณจะได้เห็นภายในนี้ environment-- และที่จริงเพียงแค่ให้ 93 00:04:39,420 --> 00:04:40,050 ฉันหยุดการทำงานชั่วคราว 94 00:04:40,050 --> 00:04:42,680 มีใครไม่ได้ที่นี่? 95 00:04:42,680 --> 00:04:45,070 ไม่อยู่ที่นี่? 96 00:04:45,070 --> 00:04:45,800 ตกลง. 97 00:04:45,800 --> 00:04:49,030 เพื่อให้ฉันชี้ให้เห็นไม่กี่ ลักษณะของสภาพแวดล้อมเช่นนี้ 98 00:04:49,030 --> 00:04:55,024 >> ดังนั้นที่ด้านบนซ้ายของหน้าจอเรา มีรอยขีดข่วนของเวทีเพื่อที่จะพูด 99 00:04:55,024 --> 00:04:57,440 รอยขีดข่วนไม่ได้เป็นเพียงชื่อ ของการเขียนโปรแกรมภาษานี้ 100 00:04:57,440 --> 00:05:00,356 ก็ยังเป็นชื่อของแมวที่ คุณเห็นโดยค่าเริ่มต้นมีสีส้ม 101 00:05:00,356 --> 00:05:02,160 เขาอยู่บนเวทีเพื่อให้ เหมือนฉันอธิบาย 102 00:05:02,160 --> 00:05:05,770 เต่าก่อนหน้านี้เป็นอยู่ใน สภาพแวดล้อมบอร์ดสีขาวเป็นรูปสี่เหลี่ยมผืนผ้า 103 00:05:05,770 --> 00:05:09,800 โลกของแมวตัวนี้ถูกกักขังอยู่ทั้งหมด ที่ด้านบนสี่เหลี่ยมผืนผ้ามีขึ้น 104 00:05:09,800 --> 00:05:12,210 >> ในขณะเดียวกันทางด้านขวา ด้านที่นี่มันเป็น 105 00:05:12,210 --> 00:05:15,610 เพียงแค่พื้นที่สคริปต์เป็น กระดานชนวนว่างเปล่าถ้าคุณจะ 106 00:05:15,610 --> 00:05:18,590 นี่คือที่เรากำลังจะเขียน โปรแกรมของเราในเวลาเพียงสักครู่ 107 00:05:18,590 --> 00:05:22,935 และการก่อสร้างตึกหรือว่าเราจะ ใช้ในการเขียนนี้ program-- ปริศนา 108 00:05:22,935 --> 00:05:25,310 ชิ้นถ้าคุณมี will-- ผู้ขวาที่นี่อยู่ตรงกลาง 109 00:05:25,310 --> 00:05:27,500 และพวกเขากำลังอยู่ในหมวดหมู่ โดยการทำงาน 110 00:05:27,500 --> 00:05:31,000 ดังนั้นสำหรับตัวอย่างเช่นฉันจะไปข้างหน้า และแสดงให้เห็นอย่างน้อยหนึ่งของเหล่านี้ 111 00:05:31,000 --> 00:05:33,690 ฉันจะไปข้างหน้าและคลิก ด้านบนประเภทการควบคุมขึ้น 112 00:05:33,690 --> 00:05:35,720 >> ดังนั้นเหล่านี้เป็นประเภทขึ้นด้านบน 113 00:05:35,720 --> 00:05:39,410 ฉันจะคลิกประเภทการควบคุม 114 00:05:39,410 --> 00:05:44,020 แต่ฉันจะไปคลิกเหตุการณ์ ประเภทหนึ่งขึ้นเป็นครั้งแรกบนมาก 115 00:05:44,020 --> 00:05:47,790 และถ้าคุณต้องการที่จะทำตามแม้กระทั่ง ในขณะที่เราทำเช่นนี้คุณค่อนข้างยินดีต้อนรับสู่ 116 00:05:47,790 --> 00:05:52,180 ฉันจะคลิกและลากนี้ คนแรก "เมื่อธงสีเขียวคลิก." 117 00:05:52,180 --> 00:05:58,410 แล้วฉันจะวางมันเป็นเพียงแค่ ประมาณที่ด้านบนของหลังคาว่างเปล่าของฉัน 118 00:05:58,410 --> 00:06:01,450 >> และสิ่งที่ดีเกี่ยวกับการรอยขีดข่วน คือว่าปริศนาชิ้นนี้เมื่อ 119 00:06:01,450 --> 00:06:04,560 ประสานกับปริศนาอื่น ๆ ชิ้นจะไปทำอย่างแท้จริง 120 00:06:04,560 --> 00:06:06,460 สิ่งเหล่านั้นชิ้นส่วนปริศนาบอกว่าจะทำอย่างไร 121 00:06:06,460 --> 00:06:09,710 ดังนั้นสำหรับตัวอย่างเช่นรอยขีดข่วนเป็นสิทธิ ขณะนี้อยู่ในช่วงกลางของโลกของเขา 122 00:06:09,710 --> 00:06:14,660 ฉันจะไปข้างหน้าและเลือก ตอนนี้ขอบอกว่าหมวดหมู่ Motion, 123 00:06:14,660 --> 00:06:18,000 หากคุณต้องการที่จะทำ หมวดหมู่ same-- เคลื่อนไหว 124 00:06:18,000 --> 00:06:20,430 และตอนนี้ฉันมีแจ้งให้ทราบทั้งหมด พวงของชิ้นส่วนปริศนาที่นี่ 125 00:06:20,430 --> 00:06:23,370 ว่าอีกชนิดของการทำในสิ่งที่พวกเขากล่าวว่า 126 00:06:23,370 --> 00:06:28,110 และฉันจะไปข้างหน้าและลากและ วางบล็อกย้ายขวามากกว่าที่นี่ 127 00:06:28,110 --> 00:06:31,860 >> และแจ้งให้ทราบว่าทันทีที่คุณได้รับ ใกล้กับด้านล่างของ "ธงสีเขียว 128 00:06:31,860 --> 00:06:34,580 คลิกปุ่ม "แจ้งให้ทราบล่วงหน้า วิธีเส้นสีขาวปรากฏขึ้น 129 00:06:34,580 --> 00:06:36,950 ราวกับว่ามันเกือบจะ แม่เหล็กก็ต้องการที่จะไปที่นั่น 130 00:06:36,950 --> 00:06:43,070 เพียงแค่ปล่อยให้ไปและมันจะสแนป ร่วมกันและรูปร่างจะตรงกับ 131 00:06:43,070 --> 00:06:46,620 บางทีอาจจะเป็นและตอนนี้คุณเกือบจะสามารถ คาดเดาที่เรากำลังจะมีนี้ 132 00:06:46,620 --> 00:06:51,570 >> ถ้าคุณดูที่เวทีรอยขีดข่วน มากกว่าที่นี่และมองไปที่ด้านบนของมัน 133 00:06:51,570 --> 00:06:55,142 คุณจะเห็นแสงสีแดง เข้าสู่ระบบหยุดและธงสีเขียว 134 00:06:55,142 --> 00:06:57,100 และฉันจะไปข้างหน้า และดู screen-- ของฉัน 135 00:06:57,100 --> 00:06:58,460 เพื่อรอสักครู่ถ้าคุณสามารถ 136 00:06:58,460 --> 00:07:01,960 ฉันจะคลิก ธงสีเขียวในขณะนี้ 137 00:07:01,960 --> 00:07:07,850 และเขาย้ายสิ่งที่ปรากฏเป็น 10 ขั้นตอน หรือ 10 พิกเซล, 10 จุดบนหน้าจอ 138 00:07:07,850 --> 00:07:13,390 >> และอื่น ๆ ไม่ได้เป็นที่น่าตื่นเต้น แต่ให้ฉันเสนอ 139 00:07:13,390 --> 00:07:17,440 โดยไม่ได้เรียนการสอนนี้เพียง โดยใช้ตัวเอง Let intuition-- ของคุณเอง 140 00:07:17,440 --> 00:07:22,560 ผมเสนอว่าคุณคิดออกว่าจะ ทำให้ใช้เวลาเดินเพียงรอยขีดข่วนขวาปิดเวที 141 00:07:22,560 --> 00:07:28,700 มีเขาทำให้ทางด้านขวาของ หน้าจอไปทางขวา 142 00:07:28,700 --> 00:07:32,200 ผมขอให้คุณสักครู่ หรือเพื่อที่จะต่อสู้กับว่า 143 00:07:32,200 --> 00:07:37,681 คุณอาจต้องการที่จะดู ในประเภทอื่น ๆ ของบล็อก 144 00:07:37,681 --> 00:07:38,180 ก็ดี 145 00:07:38,180 --> 00:07:41,290 ดังนั้นเพียงแค่สรุปเมื่อเรามี ธงสีเขียวคลิกที่นี่ 146 00:07:41,290 --> 00:07:44,850 และย้ายไป 10 ขั้นตอนคือ การเรียนการสอนเท่านั้นในแต่ละครั้งที่ผม 147 00:07:44,850 --> 00:07:46,720 คลิกธงสีเขียว, สิ่งที่เกิดขึ้น? 148 00:07:46,720 --> 00:07:50,070 ดีที่ใช้โปรแกรมของฉัน 149 00:07:50,070 --> 00:07:52,450 ดังนั้นผมจึงสามารถทำเช่นนี้ อาจจะ 10 ครั้งด้วยตนเอง 150 00:07:52,450 --> 00:07:55,130 แต่ตอนนี้รู้สึกเล็ก ๆ น้อย ๆ บิต hackish, เพื่อที่จะพูด 151 00:07:55,130 --> 00:07:57,480 ด้วยเหตุนี้ฉันไม่ได้จริงๆ การแก้ปัญหาที่เกิดขึ้น 152 00:07:57,480 --> 00:08:00,530 ฉันแค่พยายามอีกครั้งและ อีกครั้งและอีกครั้งและอีกครั้ง 153 00:08:00,530 --> 00:08:03,180 จนกว่าฉันจะเรียงลำดับของการตั้งใจ บรรลุสั่ง 154 00:08:03,180 --> 00:08:05,560 ที่ผมออกไปก่อนหน้านี้ประสบความสำเร็จ 155 00:08:05,560 --> 00:08:08,200 >> แต่เรารู้จากเรา pseudocode ก่อนหน้านี้ที่มี 156 00:08:08,200 --> 00:08:11,870 ความคิดนี้ในการเขียนโปรแกรมของบ่วง ทำอะไรบางอย่างอีกครั้งและอีกครั้ง 157 00:08:11,870 --> 00:08:14,888 และดังนั้นผมจึงเห็นว่าพวงของคุณ ถึงสิ่งที่สำหรับชิ้นส่วนปริศนา? 158 00:08:14,888 --> 00:08:17,870 159 00:08:17,870 --> 00:08:18,730 ทำซ้ำจนกว่า 160 00:08:18,730 --> 00:08:21,400 ดังนั้นเราจึงสามารถทำบางสิ่งบางอย่าง เช่นการทำซ้ำจนกว่า 161 00:08:21,400 --> 00:08:23,760 และสิ่งที่คุณทำซ้ำจนกว่าว่า? 162 00:08:23,760 --> 00:08:27,720 163 00:08:27,720 --> 00:08:28,540 >> ตกลง. 164 00:08:28,540 --> 00:08:31,974 และแจ้งให้เราไปกับคนที่ ค่อนข้างง่ายสำหรับรอสักครู่ 165 00:08:31,974 --> 00:08:33,140 ให้ฉันไปข้างหน้าและทำเช่นนี้ 166 00:08:33,140 --> 00:08:35,559 ขอให้สังเกตว่าในขณะที่คุณอาจจะมี ค้นพบภายใต้การควบคุม 167 00:08:35,559 --> 00:08:38,409 มีบล็อกซ้ำนี้ซึ่ง ดูไม่เหมือนมันเป็นเรื่องที่ใหญ่ 168 00:08:38,409 --> 00:08:41,039 มีห้องพักไม่มากในการเป็น ระหว่างทั้งสองเส้นสีเหลือง 169 00:08:41,039 --> 00:08:43,539 แต่ในขณะที่บางท่านอาจจะมี สังเกตเห็นถ้าคุณลากและวาง 170 00:08:43,539 --> 00:08:45,150 แจ้งให้ทราบว่ามันจะเติบโตเพื่อเติมเต็มรูปร่าง 171 00:08:45,150 --> 00:08:46,274 >> และคุณยังสามารถอัดมากขึ้น 172 00:08:46,274 --> 00:08:48,670 มันก็จะทำให้การเจริญเติบโตถ้า คุณลากและวางเมาส์เหนือมัน 173 00:08:48,670 --> 00:08:51,110 และผมก็ไม่ทราบว่ามีอะไร ดีที่สุดที่นี่เพื่อให้ 174 00:08:51,110 --> 00:08:54,760 ฉันอย่างน้อยทำซ้ำห้าครั้งสำหรับ อินสแตนซ์และจากนั้นกลับไปที่เวที 175 00:08:54,760 --> 00:08:56,720 และคลิกที่ธงสีเขียว 176 00:08:56,720 --> 00:08:59,110 และตอนนี้แจ้งให้ทราบก็ไม่มาก 177 00:08:59,110 --> 00:09:02,400 >> ตอนนี้บางท่านเสนอเป็น วิกตอเรียก็ไม่ทำซ้ำ 10 ครั้ง 178 00:09:02,400 --> 00:09:05,140 และโดยทั่วไปจะ ได้รับเขาตลอดทาง 179 00:09:05,140 --> 00:09:10,510 แต่จะไม่ได้มีประสิทธิภาพมากขึ้น วิธีที่ดีกว่าโดยพลการหา 180 00:09:10,510 --> 00:09:12,640 วิธีการหลายย้ายเพื่อให้? 181 00:09:12,640 --> 00:09:17,680 สิ่งที่อาจจะเป็นบล็อกที่ดีกว่า กว่า 10 ครั้งทำซ้ำจะเป็นอย่างไร 182 00:09:17,680 --> 00:09:20,380 >> ใช่ดังนั้นทำไมไม่ทำอะไรบางอย่างถาวรหรือไม่ 183 00:09:20,380 --> 00:09:24,390 และตอนนี้ให้ฉันย้ายชิ้นส่วนปริศนานี้ ภายในมีและกำจัดคนนี้ 184 00:09:24,390 --> 00:09:28,300 ตอนนี้ทราบว่าที่ไม่มีรอยขีดข่วน เริ่มต้นเขาจะไปที่ขอบ 185 00:09:28,300 --> 00:09:30,700 และโชคดีที่เอ็มไอที ผู้ที่จะทำให้รอยขีดข่วนเพียง 186 00:09:30,700 --> 00:09:33,190 ทำให้แน่ใจว่าเขาไม่เคย หายไปอย่างสมบูรณ์ 187 00:09:33,190 --> 00:09:35,360 คุณสามารถคว้าหางของเขา 188 00:09:35,360 --> 00:09:37,680 >> และเพียงแค่สังหรณ์ใจ ทำไมเขาไม่ให้ย้าย? 189 00:09:37,680 --> 00:09:38,892 เกิดขึ้นที่นี่คืออะไร? 190 00:09:38,892 --> 00:09:41,440 191 00:09:41,440 --> 00:09:43,824 ดูเหมือนว่าเขาจะหยุด แต่ แล้วถ้าผมรับและลาก 192 00:09:43,824 --> 00:09:45,240 เขาช่วยให้ความต้องการที่จะไปที่นั่น 193 00:09:45,240 --> 00:09:46,123 ทำไมเป็นเช่นนั้น? 194 00:09:46,123 --> 00:09:51,610 195 00:09:51,610 --> 00:09:54,360 แท้จริงคอมพิวเตอร์เป็นตัวอักษร จะทำในสิ่งที่คุณบอกว่าจะทำอย่างไร 196 00:09:54,360 --> 00:09:58,380 ดังนั้นถ้าคุณบอกว่ามันทำก่อนหน้านี้ สิ่งต่อไปนี้ตลอดไปย้าย 10 ขั้นตอน 197 00:09:58,380 --> 00:10:01,860 ก็จะเก็บไปและไป จนกว่าฉันจะตีป้ายแดง 198 00:10:01,860 --> 00:10:04,620 และหยุดโปรแกรมทั้งหมด 199 00:10:04,620 --> 00:10:06,610 >> ดังนั้นแม้ว่าคุณจะไม่ได้ ทำเช่นนี้ฉันจะทำอย่างไร 200 00:10:06,610 --> 00:10:09,510 ให้ย้ายรอยขีดข่วนได้เร็วขึ้น ผ่านหน้าจอ? 201 00:10:09,510 --> 00:10:12,060 202 00:10:12,060 --> 00:10:13,280 ขั้นตอนมากขึ้นใช่ไหม? 203 00:10:13,280 --> 00:10:15,710 ดังนั้นแทนที่จะทำ 10 ในเวลาที่ทำไมเราไม่ 204 00:10:15,710 --> 00:10:20,100 ไปข้างหน้าและเปลี่ยน to-- สิ่งที่คุณจะ propose-- 50? 205 00:10:20,100 --> 00:10:24,410 ดังนั้นตอนนี้ฉันกำลังจะไปคลิกสีเขียว ธงและแน่นอนเขาจะไปได้อย่างรวดเร็วจริงๆ 206 00:10:24,410 --> 00:10:27,180 >> และนี้แน่นอนเป็นเพียง เป็นการรวมตัวกันของการเคลื่อนไหว 207 00:10:27,180 --> 00:10:28,060 นิเมชั่นคืออะไร? 208 00:10:28,060 --> 00:10:33,090 มันเป็นเพียงแค่แสดงให้คุณเห็นมนุษย์ ทั้งกลุ่มของภาพนิ่งจริงๆ 209 00:10:33,090 --> 00:10:34,160 จริงๆอย่างรวดเร็วจริงๆ 210 00:10:34,160 --> 00:10:36,500 และดังนั้นถ้าเราเพียงแค่บอก เขาย้ายขั้นตอนมากขึ้น 211 00:10:36,500 --> 00:10:39,750 เราเพียงแค่มีผลกระทบที่จะมีการ การเปลี่ยนแปลงที่เขาอยู่บนหน้าจอ 212 00:10:39,750 --> 00:10:42,900 ทั้งหมดที่มากขึ้นอย่างรวดเร็วต่อหน่วยของเวลา 213 00:10:42,900 --> 00:10:46,454 >> ตอนนี้ความท้าทายต่อไปที่ผมเสนอ ก็จะมีเขากระเด็นขอบ 214 00:10:46,454 --> 00:10:49,120 และไม่ทราบว่าสิ่งที่จิ๊กซอว์ ชิ้น exist-- เพราะมันเป็นเรื่องที่ดี 215 00:10:49,120 --> 00:10:53,030 ถ้าคุณไม่ได้รับการ ขั้นตอนของการ challenge-- สิ่งที่ 216 00:10:53,030 --> 00:10:54,280 คุณต้องการที่จะทำอย่างสังหรณ์ใจ? 217 00:10:54,280 --> 00:10:58,030 วิธีการที่เราจะได้เขากลับมาและ มาระหว่างซ้ายและขวา? 218 00:10:58,030 --> 00:11:02,630 219 00:11:02,630 --> 00:11:03,810 >> ใช่. 220 00:11:03,810 --> 00:11:05,680 ดังนั้นเราจึงจำเป็นบางชนิด สภาพและเรา 221 00:11:05,680 --> 00:11:09,710 ดูเหมือนจะมีเงื่อนไขเพื่อที่จะ พูดภายใต้หมวดหมู่การควบคุม 222 00:11:09,710 --> 00:11:14,110 ซึ่งบล็อกเหล่านี้ เราไม่อาจจะต้องการได้หรือไม่ 223 00:11:14,110 --> 00:11:15,200 ใช่อาจจะ "ถ้าแล้ว." 224 00:11:15,200 --> 00:11:18,780 ดังนั้นสังเกตเห็นว่าในหมู่บล็อกสีเหลือง เรามีที่นี่มีเป็นแบบนี้ "ถ้า" 225 00:11:18,780 --> 00:11:23,920 หรือนี้ "ถ้าอื่น" บล็อกที่จะ ช่วยให้เราสามารถทำให้การตัดสินใจที่จะทำเช่นนี้ 226 00:11:23,920 --> 00:11:25,000 หรือจะทำอย่างนั้น 227 00:11:25,000 --> 00:11:27,380 แม้และคุณสามารถให้พวกเขารัง จะทำสิ่งที่หลาย ๆ 228 00:11:27,380 --> 00:11:34,910 หรือถ้าคุณไม่ได้ไปที่นี่เลย ไปข้างหน้าไปที่หมวดหมู่การตรวจจับ 229 00:11:34,910 --> 00:11:39,612 and-- ขอดูว่ามันนี่ 230 00:11:39,612 --> 00:11:43,050 231 00:11:43,050 --> 00:11:52,050 >> ดังนั้นสิ่งที่บล็อกอาจจะเป็นประโยชน์ที่นี่ การตรวจสอบถ้าเขาออกเวที? 232 00:11:52,050 --> 00:11:56,740 ใช่สังเกตเห็นบางส่วนของบล็อกเหล่านี้ว่า สามารถ parametrized เพื่อที่จะพูด 233 00:11:56,740 --> 00:12:00,706 พวกเขาสามารถปรับแต่งการจัดเรียงของไม่ได้ ซึ่งแตกต่างจาก HTML เมื่อวานนี้มีคุณลักษณะ 234 00:12:00,706 --> 00:12:03,330 ซึ่งคุณลักษณะเหล่านั้นชนิดของ ปรับแต่งการทำงานของแท็กที่ 235 00:12:03,330 --> 00:12:08,880 ในทำนองเดียวกันที่นี่ผมสามารถคว้าสัมผัสนี้ บล็อกและการเปลี่ยนแปลงและถามคำถาม 236 00:12:08,880 --> 00:12:11,500 คุณกำลังสัมผัสเมาส์ ชี้เหมือนเคอร์เซอร์ 237 00:12:11,500 --> 00:12:13,250 หรือคุณสัมผัสขอบ? 238 00:12:13,250 --> 00:12:15,210 >> เพื่อให้ฉันไปในและทำเช่นนี้ 239 00:12:15,210 --> 00:12:18,130 ฉันจะซูมออกสักครู่ 240 00:12:18,130 --> 00:12:21,320 ให้ฉันคว้าชิ้นส่วนปริศนานี้ ที่นี่ชิ้นส่วนปริศนานี้นี้ 241 00:12:21,320 --> 00:12:24,570 และฉันจะสับสน พวกเขาขึ้นเพื่อรอสักครู่ 242 00:12:24,570 --> 00:12:27,620 ผมจะย้ายไปนี้ เปลี่ยนเป็นขอบสัมผัส 243 00:12:27,620 --> 00:12:38,590 และฉันจะเคลื่อนไหวทำเช่นนี้ 244 00:12:38,590 --> 00:12:40,490 ดังนั้นนี่คือส่วนผสมบาง 245 00:12:40,490 --> 00:12:42,570 ฉันคิดว่าฉันมีทุกอย่างที่ฉันต้องการ 246 00:12:42,570 --> 00:12:47,710 >> คนที่ต้องการที่จะนำเสนอวิธีการที่ฉัน สามารถเชื่อมต่อเหล่านี้อาจจะบนลงล่าง 247 00:12:47,710 --> 00:12:52,020 เพื่อที่จะแก้ปัญหาของการมี รอยขีดข่วนย้ายขวาไปซ้ายไปขวาเพื่อ 248 00:12:52,020 --> 00:12:57,020 จากซ้ายไปขวาไปซ้ายแต่ละ เวลาเพียงไม่ใหญ่ปิดผนังหรือไม่ 249 00:12:57,020 --> 00:12:58,050 อะไรที่ฉันต้องการจะทำอย่างไร? 250 00:12:58,050 --> 00:13:01,097 ซึ่งบล็อกที่ฉันควรจะเชื่อมต่อไปยัง "ธงสีเขียวเมื่อคลิกแรก"? 251 00:13:01,097 --> 00:13:04,060 252 00:13:04,060 --> 00:13:06,200 >> ตกลงดังนั้นขอเริ่มต้นด้วย "ตลอดไป." 253 00:13:06,200 --> 00:13:07,170 สิ่งที่จะไปภายในต่อไปหรือไม่ 254 00:13:07,170 --> 00:13:10,290 คนอื่น 255 00:13:10,290 --> 00:13:11,850 ตกลงย้ายไปตามขั้นตอน 256 00:13:11,850 --> 00:13:12,350 ก็ดี 257 00:13:12,350 --> 00:13:14,470 แล้วไง? 258 00:13:14,470 --> 00:13:15,120 ดังนั้นแล้วหาก 259 00:13:15,120 --> 00:13:17,720 และแจ้งให้ทราบถึงแม้ว่ามันจะมีลักษณะ แซนวิชด้วยกันแน่น 260 00:13:17,720 --> 00:13:19,500 มันก็จะเติบโตในการกรอกข้อมูล 261 00:13:19,500 --> 00:13:21,500 มันก็จะกระโดดในที่ที่ฉันต้องการ 262 00:13:21,500 --> 00:13:25,920 >> และสิ่งที่ผมใส่ระหว่าง ถ้าและแล้ว? 263 00:13:25,920 --> 00:13:27,180 อาจจะ "ถ้าสัมผัสขอบ." 264 00:13:27,180 --> 00:13:31,800 และแจ้งให้ทราบอีกครั้งก็ใหญ่เกินไป สำหรับมัน แต่มันจะเติบโตในการกรอกข้อมูล 265 00:13:31,800 --> 00:13:35,002 แล้วเปิด 15 องศา? 266 00:13:35,002 --> 00:13:35,710 กี่องศา? 267 00:13:35,710 --> 00:13:38,800 268 00:13:38,800 --> 00:13:41,196 ใช่ดังนั้น 180 จะหมุน ฉันทุกทางรอบ 269 00:13:41,196 --> 00:13:42,570 ดังนั้นเรามาดูว่าผมได้รับสิทธินี้ 270 00:13:42,570 --> 00:13:43,930 ผมขอซูมออก 271 00:13:43,930 --> 00:13:45,130 >> ผมขอลาก Scratch ขึ้น 272 00:13:45,130 --> 00:13:50,030 ดังนั้นเขาจึงเป็นเพียงเล็กน้อยบิดเบี้ยว ตอนนี้ แต่ที่ดี 273 00:13:50,030 --> 00:13:52,231 ฉันจะรีเซ็ตเขาได้อย่างง่ายดาย? 274 00:13:52,231 --> 00:13:59,879 275 00:13:59,879 --> 00:14:01,045 ฉันจะโกงเล็กน้อย 276 00:14:01,045 --> 00:14:04,074 277 00:14:04,074 --> 00:14:05,990 ดังนั้นฉันเพิ่มอีก บล็อกเพียงเพื่อให้มีความชัดเจน 278 00:14:05,990 --> 00:14:08,424 ผมต้องการให้เขาจะชี้ 90 องศา ไปทางขวาโดยเริ่มต้นที่ 279 00:14:08,424 --> 00:14:10,840 ดังนั้นฉันเพียงแค่จะบอกเขา ที่จะทำโปรแกรม 280 00:14:10,840 --> 00:14:11,632 และที่นี่เราไป 281 00:14:11,632 --> 00:14:14,740 282 00:14:14,740 --> 00:14:15,740 ดูเหมือนว่าเราได้ทำมัน 283 00:14:15,740 --> 00:14:19,980 มันแปลกเล็กน้อยเพราะ เขาเดินคว่ำ 284 00:14:19,980 --> 00:14:21,250 ขอเรียกว่าข้อผิดพลาด 285 00:14:21,250 --> 00:14:22,120 นั่นเป็นความผิดพลาด 286 00:14:22,120 --> 00:14:27,320 ข้อผิดพลาดเป็นข้อผิดพลาดในโปรแกรมเป็น ข้อผิดพลาดที่ผมตรรกะของมนุษย์ที่ทำ 287 00:14:27,320 --> 00:14:28,985 ทำไมเขาจะคว่ำลง? 288 00:14:28,985 --> 00:14:33,560 289 00:14:33,560 --> 00:14:35,250 ไม่ MIT กรูขึ้นหรือไม่ฉัน? 290 00:14:35,250 --> 00:14:38,840 291 00:14:38,840 --> 00:14:42,550 >> ใช่ฉันหมายความว่ามันไม่ได้เป็นของเอ็มไอที ความผิด พวกเขาให้ฉันชิ้นส่วนจิ๊กซอว์ 292 00:14:42,550 --> 00:14:44,970 ที่บอกว่าเปิดจำนวนองศาบาง 293 00:14:44,970 --> 00:14:47,672 และข้อเสนอแนะของวิกตอเรีย ฉันหัน 180 องศา 294 00:14:47,672 --> 00:14:48,880 ซึ่งเป็นสัญชาตญาณที่เหมาะสม 295 00:14:48,880 --> 00:14:53,700 แต่หัน 180 องศาอย่างแท้จริง หมายถึงการหัน 180 องศา 296 00:14:53,700 --> 00:14:55,860 และที่ไม่ได้จริงๆ สิ่งที่ผมอยากเห็นได้ชัด 297 00:14:55,860 --> 00:14:58,026 เพราะอย่างน้อยเขาอยู่ใน โลกนี้สองมิติ 298 00:14:58,026 --> 00:15:00,740 เพื่อเปลี่ยนเป็นจริงที่เกิด เขาจะพลิกคว่ำ 299 00:15:00,740 --> 00:15:04,030 >> ฉันอาจต้องการที่จะใช้สิ่งที่บล็อก แต่ขึ้นอยู่กับสิ่งที่คุณเห็นนี่? 300 00:15:04,030 --> 00:15:11,890 301 00:15:11,890 --> 00:15:14,790 วิธีการที่เราอาจจะแก้ไขปัญหานี้อย่างไร 302 00:15:14,790 --> 00:15:18,380 ใช่ดังนั้นเราจึงสามารถชี้ ในทิศทางตรงกันข้าม 303 00:15:18,380 --> 00:15:22,300 และที่จริงแม้กระทั่งว่า ไม่ได้ไปจะพอ 304 00:15:22,300 --> 00:15:26,410 เพราะเราสามารถยากรหัส เพื่อชี้ทางซ้ายหรือขวา 305 00:15:26,410 --> 00:15:27,920 >> คุณจะรู้ว่าสิ่งที่เราสามารถทำอะไรได้บ้าง 306 00:15:27,920 --> 00:15:30,160 ดูเหมือนว่าเรามี ความสะดวกสบายที่นี่บล็อก 307 00:15:30,160 --> 00:15:32,987 ถ้าฉันซูมเข้าดูที่ บางสิ่งบางอย่างที่เราชอบที่นี่? 308 00:15:32,987 --> 00:15:36,120 309 00:15:36,120 --> 00:15:40,020 เพื่อให้ดูเหมือนว่ามีเอ็มไอที นามธรรมที่สร้างขึ้นในที่นี่ 310 00:15:40,020 --> 00:15:45,440 บล็อกนี้ดูเหมือนว่าจะเทียบเท่า ที่บล็อกอื่น ๆ พหูพจน์? 311 00:15:45,440 --> 00:15:49,510 >> หนึ่งบล็อกนี้ดูเหมือนว่าจะเทียบเท่า ทั้งสามคนไปทั้งหมดนี้ของบล็อก 312 00:15:49,510 --> 00:15:50,880 ที่เรามีที่นี่ 313 00:15:50,880 --> 00:15:54,670 ดังนั้นมันจะเปิดออกผมสามารถลดความซับซ้อนของฉัน โปรแกรมโดยการกำจัดทุกที่ 314 00:15:54,670 --> 00:15:58,270 และเพียงแค่ใส่นี้ที่นี่ 315 00:15:58,270 --> 00:16:01,620 และตอนนี้เขาก็ยังคงเป็นเพียงเล็กน้อย รถและที่ดีสำหรับตอนนี้ 316 00:16:01,620 --> 00:16:03,370 เราจะออกจากที่เป็น 317 00:16:03,370 --> 00:16:06,000 แต่โปรแกรมของฉันคือแม้ ที่เรียบง่ายและนี้มากเกินไป 318 00:16:06,000 --> 00:16:09,060 จะเป็นตัวแทน ของเป้าหมายในการ programming-- 319 00:16:09,060 --> 00:16:13,430 คือการทำให้ความนึกคิดของคุณเป็นรหัส เรียบง่ายเป็นขนาดเล็กที่สุดเท่าที่ทำได้ 320 00:16:13,430 --> 00:16:15,650 ในขณะที่ยังคงความเป็น สามารถอ่านได้ที่เป็นไปได้ 321 00:16:15,650 --> 00:16:20,310 คุณไม่ต้องการที่จะให้มันรวบรัดเพื่อ ว่ามันเป็นเรื่องยากที่จะเข้าใจ 322 00:16:20,310 --> 00:16:22,826 >> แต่สังเกตเห็นฉันได้แทนที่ สามบล็อกที่มีหนึ่ง 323 00:16:22,826 --> 00:16:24,200 และนั่นคือเนื้อหาที่เป็นสิ่งที่ดี 324 00:16:24,200 --> 00:16:27,280 ฉันได้แยกออกไปความคิด ของการตรวจสอบไม่ว่าคุณจะ 325 00:16:27,280 --> 00:16:29,120 บนขอบที่มีเพียงหนึ่งช่วงตึก 326 00:16:29,120 --> 00:16:31,520 ตอนนี้เราสามารถมีความสุขกับเรื่องนี้ในความเป็นจริง 327 00:16:31,520 --> 00:16:35,790 นี้ไม่ได้เพิ่มมาก มูลค่าทางปัญญา แต่ค่าขี้เล่น 328 00:16:35,790 --> 00:16:39,730 ฉันจะไปข้างหน้า และคว้าเสียงที่นี่ 329 00:16:39,730 --> 00:16:42,900 330 00:16:42,900 --> 00:16:46,420 เพื่อให้ฉันไปข้างหน้าและแจ้งให้เรา หยุดโปรแกรมสักครู่ 331 00:16:46,420 --> 00:16:52,070 ฉันจะบันทึกต่อไปนี้ ช่วยให้เข้าถึงไมโครโฟนของฉัน 332 00:16:52,070 --> 00:16:53,181 >> ไปเลย. 333 00:16:53,181 --> 00:16:53,680 อุ๊ย 334 00:16:53,680 --> 00:16:58,710 335 00:16:58,710 --> 00:17:01,140 ลองนี้อีกครั้ง 336 00:17:01,140 --> 00:17:02,279 ไปเลย. 337 00:17:02,279 --> 00:17:03,570 ตกลงฉันบันทึกสิ่งที่ผิด 338 00:17:03,570 --> 00:17:04,580 ไปเลย. 339 00:17:04,580 --> 00:17:05,080 อุ๊ย 340 00:17:05,080 --> 00:17:07,910 341 00:17:07,910 --> 00:17:08,800 อุ๊ย 342 00:17:08,800 --> 00:17:09,300 ก็ดี 343 00:17:09,300 --> 00:17:10,791 ตอนนี้ผมต้องกำจัดที่ 344 00:17:10,791 --> 00:17:11,290 ก็ดี 345 00:17:11,290 --> 00:17:13,950 >> ดังนั้นตอนนี้ผมมี การบันทึกเพียงแค่ "อุ๊ย." 346 00:17:13,950 --> 00:17:18,040 ดังนั้นตอนนี้ฉันกำลังจะไป ข้างหน้าและเรียกสิ่งนี้ว่า "อุ๊ย." 347 00:17:18,040 --> 00:17:20,270 ฉันจะกลับไป สคริปต์ฉันและตอนนี้ 348 00:17:20,270 --> 00:17:25,460 แจ้งให้ทราบล่วงหน้ามีบล็อกที่เรียกว่า เล่นเสียง "Meow" หรือเล่นเสียง "อุ๊ย." 349 00:17:25,460 --> 00:17:28,920 ฉันจะลากนี้และที่ ฉันควรใส่นี้สำหรับผลตลก? 350 00:17:28,920 --> 00:17:31,740 351 00:17:31,740 --> 00:17:37,860 ใช่ดังนั้นตอนนี้มันเป็นชนิดของ รถเพราะตอนนี้ block-- 352 00:17:37,860 --> 00:17:42,050 แจ้งให้ทราบว่าเรื่องนี้ "ถ้าในขอบ ตีกลับ "เป็นชนิดของตนเองมี 353 00:17:42,050 --> 00:17:43,704 ดังนั้นผมจึงจำเป็นต้องแก้ไขปัญหานี้ 354 00:17:43,704 --> 00:17:44,870 ให้ฉันไปข้างหน้าและทำเช่นนี้ 355 00:17:44,870 --> 00:17:48,630 ให้ฉันได้รับการกำจัดนี้และกลับไป ไปที่เดิมของเรามากขึ้นโดยเจตนา 356 00:17:48,630 --> 00:17:49,870 ฟังก์ชั่น 357 00:17:49,870 --> 00:18:01,080 ดังนั้น "ถ้าสัมผัสขอบแล้ว" ฉันต้องการ เพื่อเปิดเป็นวิกตอเรียเสนอ 358 00:18:01,080 --> 00:18:02,480 180 องศา 359 00:18:02,480 --> 00:18:05,497 และฉันต้องการที่จะเล่น เสียง "อุ๊ย" มี? 360 00:18:05,497 --> 00:18:11,800 361 00:18:11,800 --> 00:18:15,580 >> ใช่แจ้งให้ทราบก็ออกไปข้างนอก ที่บล็อกสีเหลือง 362 00:18:15,580 --> 00:18:17,680 ดังนั้นนี้มากเกินไปจะเป็น ข้อผิดพลาด แต่ฉันได้สังเกตเห็นมัน 363 00:18:17,680 --> 00:18:21,290 ดังนั้นฉันจะลากขึ้นที่นี่ และแจ้งให้ทราบตอนนี้ก็ภายใน "ถ้า". 364 00:18:21,290 --> 00:18:24,250 ดังนั้น "ถ้า" เป็นประเภทนี้ เช่น blot แขนเหมือน 365 00:18:24,250 --> 00:18:26,260 ที่เพียงไป ทำในสิ่งที่ภายในของมัน 366 00:18:26,260 --> 00:18:30,216 ดังนั้นตอนนี้ถ้าผมซูมออกที่ ความเสี่ยงของการ annoying-- 367 00:18:30,216 --> 00:18:32,860 368 00:18:32,860 --> 00:18:36,470 >> คอมพิวเตอร์: อุ๊ยอุ๊ยอุ๊ย 369 00:18:36,470 --> 00:18:39,910 >> DAVID ลัน: และมัน ก็จะอยู่กับคุณตลอดไป 370 00:18:39,910 --> 00:18:44,160 ตอนนี้เพียงแค่สิ่งที่จะเร่ง ที่นี่ให้ฉันไปข้างหน้าและเปิดขึ้น 371 00:18:44,160 --> 00:18:50,460 ขอ say-- ให้ฉันไปบางส่วน ของสิ่งที่เป็นของตัวเองจากชั้นเรียน 372 00:18:50,460 --> 00:18:53,000 373 00:18:53,000 --> 00:19:00,220 และแจ้งให้เราเปิดขึ้นสมมติว่านี้ หนึ่งที่ทำโดยหนึ่งในการเรียนการสอนพวกเรา 374 00:19:00,220 --> 00:19:01,500 สองสามปีที่ผ่านมา 375 00:19:01,500 --> 00:19:04,732 ดังนั้นบางท่านอาจจะจำได้ เกมนี้จากปีกลาย 376 00:19:04,732 --> 00:19:05,940 และมันเป็นเรื่องที่น่าทึ่งจริง 377 00:19:05,940 --> 00:19:08,190 แม้ว่าเราจะได้ทำ ที่ง่ายที่สุดของโปรแกรมในขณะนี้ 378 00:19:08,190 --> 00:19:09,980 ลองพิจารณาสิ่งนี้ ดูเหมือนจริง 379 00:19:09,980 --> 00:19:10,650 ผมขอตีเล่น 380 00:19:10,650 --> 00:19:14,210 381 00:19:14,210 --> 00:19:18,980 >> ดังนั้นในเกมนี้เรามี กบและการใช้ลูกศร keys-- 382 00:19:18,980 --> 00:19:23,340 เขาใช้ขั้นตอนที่มีขนาดใหญ่กว่าฉัน remember-- ฉันมีการควบคุมมากกว่ากบ 383 00:19:23,340 --> 00:19:29,630 และมีเป้าหมายที่จะได้รับในไม่ว่าง ถนนโดยไม่ต้องวิ่งเข้าไปในรถ 384 00:19:29,630 --> 00:19:34,735 และขอ see-- ถ้าผมขึ้นไปนี่ผม ต้องรอให้เข้าสู่ระบบเพื่อเลื่อนโดย 385 00:19:34,735 --> 00:19:38,130 386 00:19:38,130 --> 00:19:39,274 นี้รู้สึกเหมือนข้อผิดพลาด 387 00:19:39,274 --> 00:19:42,240 388 00:19:42,240 --> 00:19:43,495 นี้เป็นชนิดของข้อผิดพลาด 389 00:19:43,495 --> 00:19:45,980 390 00:19:45,980 --> 00:19:46,480 ก็ดี 391 00:19:46,480 --> 00:19:51,550 ฉันเกี่ยวกับเรื่องนี้ที่นี่ มีแล้วคุณเก็บ 392 00:19:51,550 --> 00:19:54,100 ไปจนกว่าคุณจะได้รับทั้งหมด กบแผ่นลิลลี่ 393 00:19:54,100 --> 00:19:55,920 ตอนนี้อาจจะดู ทั้งหมดที่ซับซ้อนมากขึ้น 394 00:19:55,920 --> 00:19:57,840 แต่ให้พยายามที่จะทำลาย ลงจิตใจ 395 00:19:57,840 --> 00:20:00,040 และด้วยวาจาเป็นบล็อกที่เป็นส่วนประกอบของ 396 00:20:00,040 --> 00:20:03,910 ดังนั้นอาจมีปริศนา ชิ้นส่วนที่เรายังไม่ได้เห็น 397 00:20:03,910 --> 00:20:07,440 แต่ที่ตอบสนองต่อการกดแป้นพิมพ์ สิ่งที่ฉันกดบนแป้นพิมพ์ 398 00:20:07,440 --> 00:20:11,660 >> ดังนั้นอาจมีบางชนิด บล็อกที่บอกว่าถ้าคีย์เท่ากับขึ้น 399 00:20:11,660 --> 00:20:15,965 แล้วทำอะไรกับ Scratch-- อาจจะย้ายไป 10 ขั้นตอนวิธีนี้ 400 00:20:15,965 --> 00:20:20,240 ถ้าคีย์ถูกกดลงย้าย 10 ขั้นตอน วิธีนี้หรือคีย์ซ้ายย้าย 10 ขั้นตอน 401 00:20:20,240 --> 00:20:21,710 วิธีนี้ 10 ขั้นตอนที่ 402 00:20:21,710 --> 00:20:23,644 ผมได้เปิดอย่างชัดเจนแมวลงในกบ 403 00:20:23,644 --> 00:20:26,060 เพื่อให้เป็นเพียงที่ เครื่องแต่งกายและโทรศัพท์ Scratch it-- เรา 404 00:20:26,060 --> 00:20:28,440 เพียงแค่นำเข้าภาพของกบที่ 405 00:20:28,440 --> 00:20:29,570 >> แต่สิ่งที่คนอื่นจะเกิดขึ้น? 406 00:20:29,570 --> 00:20:32,794 สิ่งที่สายอื่น ๆ ของรหัส สิ่งที่ชิ้นส่วนปริศนาอื่น ๆ 407 00:20:32,794 --> 00:20:35,460 ได้เบลคเพื่อนการเรียนการสอนของเรา ใช้ในโปรแกรมนี้เห็นได้ชัด? 408 00:20:35,460 --> 00:20:38,320 409 00:20:38,320 --> 00:20:42,730 สิ่งที่ทำให้ทุกอย่าง move-- สิ่งที่เขียนโปรแกรมสร้าง? 410 00:20:42,730 --> 00:20:44,950 >> การเคลื่อนไหว sure-- ดังนั้น ย้ายบล็อกเพื่อตรวจสอบว่า 411 00:20:44,950 --> 00:20:49,330 และสิ่งที่บล็อกย้าย ภายในของส่วนใหญ่? 412 00:20:49,330 --> 00:20:52,850 ใช่ชนิดของห่วงบางอย่างอาจจะเป็น ตลอดไปป้องกันอาจจะซ้ำ block-- 413 00:20:52,850 --> 00:20:54,070 ทำซ้ำจนกว่าบล็อก 414 00:20:54,070 --> 00:20:57,330 และนั่นคือสิ่งที่ทำให้ล็อกและ แผ่นลิลลี่และทุกสิ่งทุกอย่างที่ย้าย 415 00:20:57,330 --> 00:20:57,990 ไปมา. 416 00:20:57,990 --> 00:21:00,270 มันเป็นเพียงแค่สิ่งที่เกิดขึ้นอย่างไม่มีที่สิ้นสุด 417 00:21:00,270 --> 00:21:03,180 >> ทำไมบางส่วนของรถยนต์ ย้ายได้เร็วขึ้นกว่าคนอื่น ๆ ? 418 00:21:03,180 --> 00:21:06,607 คืออะไรที่แตกต่างกันเกี่ยวกับโปรแกรมเหล่านั้นหรือไม่ 419 00:21:06,607 --> 00:21:09,690 ใช่อาจจะเป็นบางส่วนของพวกเขาจะพา ขั้นตอนมากขึ้นในครั้งเดียวและบางส่วนของพวกเขา 420 00:21:09,690 --> 00:21:10,690 ขั้นตอนน้อยลงในครั้งเดียว 421 00:21:10,690 --> 00:21:14,670 และผลภาพ เป็นไปอย่างรวดเร็วเมื่อเทียบกับช้า 422 00:21:14,670 --> 00:21:16,030 >> คุณคิดว่าอะไรที่เกิดขึ้น? 423 00:21:16,030 --> 00:21:19,700 เมื่อฉันได้กบของฉันตลอดทาง ฝั่งตรงข้ามถนนและแม่น้ำ 424 00:21:19,700 --> 00:21:23,560 ลงบนแผ่นลิลลี่บางสิ่งบางอย่าง ที่สำคัญเกิดขึ้น 425 00:21:23,560 --> 00:21:26,540 สิ่งที่เกิดขึ้นเร็วที่สุดเท่าที่ฉันไม่ว่า? 426 00:21:26,540 --> 00:21:27,210 มันหยุด 427 00:21:27,210 --> 00:21:29,680 กบที่หยุดและ ผมได้กบที่สอง 428 00:21:29,680 --> 00:21:33,155 ดังนั้นสิ่งที่จะต้องสร้าง ใช้มีสิ่งที่คุณสมบัติ? 429 00:21:33,155 --> 00:21:36,020 430 00:21:36,020 --> 00:21:38,660 >> ใช่เพื่อให้มีชนิดของ "ถ้า" เงื่อนไขขึ้นมีมากเกินไป 431 00:21:38,660 --> 00:21:41,909 และมันจะเปิด out-- เราไม่เห็น this-- แต่มีบล็อกอื่น ๆ ในที่นั่น 432 00:21:41,909 --> 00:21:45,300 สามารถพูดได้ว่าถ้าคุณสัมผัส อีกสิ่งหนึ่งบนหน้าจอ 433 00:21:45,300 --> 00:21:47,720 ถ้าคุณกำลังสัมผัสแผ่นลิลลี่ "แล้ว." 434 00:21:47,720 --> 00:21:50,810 แล้วที่ว่าเมื่อเรา ทำให้กบสองปรากฏ 435 00:21:50,810 --> 00:21:54,969 ดังนั้นแม้ว่าเกมนี้อย่างแน่นอน ลงวันที่มากถึงแม้ว่าได้อย่างรวดเร็วก่อน 436 00:21:54,969 --> 00:21:58,010 มีมากไป on-- และเบลค ไม่ได้ชักนี้ขึ้นมาในสองนาที 437 00:21:58,010 --> 00:22:00,390 มันอาจจะพาเขาหลาย ชั่วโมงในการสร้างเกมนี้ 438 00:22:00,390 --> 00:22:03,850 ขึ้นอยู่กับหน่วยความจำหรือวิดีโอของเขา รุ่นปีกลายของมัน 439 00:22:03,850 --> 00:22:07,940 แต่ทุกสิ่งเล็ก ๆ น้อย ๆ เหล่านี้ ไปบนหน้าจอในการแยก 440 00:22:07,940 --> 00:22:11,550 ต้มลงไปเหล่านี้ง่ายมาก การเคลื่อนไหว constructs-- หรืองบ 441 00:22:11,550 --> 00:22:15,519 เหมือนอย่างที่เราได้กล่าวถึงห่วงและ เงื่อนไขและที่เกี่ยวกับมัน 442 00:22:15,519 --> 00:22:17,060 มีไม่กี่คนชอบเล่นคุณลักษณะอื่น ๆ 443 00:22:17,060 --> 00:22:19,130 บางส่วนของพวกเขาเป็นอย่างหมดจด ความงามหรืออะคูสติก 444 00:22:19,130 --> 00:22:20,964 เช่นเสียงที่ผมเพียงแค่เล่นกับ 445 00:22:20,964 --> 00:22:23,380 แต่ส่วนใหญ่คุณ มีในภาษานี้รอยขีดข่วน 446 00:22:23,380 --> 00:22:25,350 ทั้งหมดของพื้นฐาน ก่อสร้างตึกที่คุณ 447 00:22:25,350 --> 00:22:29,280 มีใน C, Java, JavaScript PHP, Ruby, Python, 448 00:22:29,280 --> 00:22:32,960 และจำนวนของภาษาอื่น ๆ 449 00:22:32,960 --> 00:22:36,720 คำถามใด ๆ เกี่ยวกับ Scratch? 450 00:22:36,720 --> 00:22:37,220 ก็ดี 451 00:22:37,220 --> 00:22:40,303 ดังนั้นเราจะไม่ดำน้ำในลึกรอยขีดข่วน แม้ว่าคุณจะยินดีต้อนรับวันหยุดสุดสัปดาห์นี้ 452 00:22:40,303 --> 00:22:42,860 โดยเฉพาะอย่างยิ่งถ้าคุณมีเด็กหรือ หลานสาวและหลานชายและเช่น 453 00:22:42,860 --> 00:22:44,220 ที่จะแนะนำให้พวกเขาที่จะเกา 454 00:22:44,220 --> 00:22:47,960 เป็นจริงขี้เล่นที่เยี่ยมยอด สภาพแวดล้อมที่มีในขณะที่ผู้เขียนบอกว่า 455 00:22:47,960 --> 00:22:49,120 เพดานสูงมาก 456 00:22:49,120 --> 00:22:51,670 แม้ว่าเราจะเริ่มต้นด้วย รายละเอียดมากในระดับต่ำ 457 00:22:51,670 --> 00:22:54,890 คุณสามารถทำได้จริงๆไม่น้อย กับมันและนี้อาจจะ 458 00:22:54,890 --> 00:22:57,360 การสาธิตของว่าที่ 459 00:22:57,360 --> 00:23:02,920 >> แต่ตอนนี้ขอเปลี่ยนไปบางมากขึ้น ปัญหาที่มีความซับซ้อนถ้าคุณจะ 460 00:23:02,920 --> 00:23:05,870 ที่เรียกว่า "ค้นหา" และ "เรียงลำดับ" มากขึ้นโดยทั่วไป 461 00:23:05,870 --> 00:23:09,500 เรามีสมุดโทรศัพท์นี้ earlier-- นี่ อีกคนหนึ่งเพียงเพื่อ discussion-- 462 00:23:09,500 --> 00:23:13,460 ว่าเรามีความสามารถในการค้นหา ได้อย่างมีประสิทธิภาพมากขึ้นเพราะ 463 00:23:13,460 --> 00:23:15,270 ของสมมติฐานอย่างมีนัยสำคัญ 464 00:23:15,270 --> 00:23:17,655 และเพียงแค่ต้องมีความชัดเจนในสิ่งที่ สมมติฐานคือผมทำ 465 00:23:17,655 --> 00:23:19,280 เมื่อค้นหาผ่านสมุดโทรศัพท์นี้หรือไม่? 466 00:23:19,280 --> 00:23:23,342 467 00:23:23,342 --> 00:23:25,300 ว่าไมค์สมิ ธ อยู่ใน สมุดโทรศัพท์ แต่ฉัน 468 00:23:25,300 --> 00:23:27,410 จะสามารถที่จะจัดการกับ สถานการณ์โดยไม่ต้องให้เขา 469 00:23:27,410 --> 00:23:30,720 มีถ้าฉันเพียงแค่หยุดก่อนเวลาอันควร 470 00:23:30,720 --> 00:23:31,806 หนังสือเล่มนี้เป็นตัวอักษร 471 00:23:31,806 --> 00:23:33,930 และที่เป็นคนใจกว้างมาก สมมติฐานเนื่องจากว่า 472 00:23:33,930 --> 00:23:36,580 หมายความ someone-- ผมชนิด ของการตัดมุม 473 00:23:36,580 --> 00:23:40,580 เหมือนฉันได้เร็วขึ้นเพราะใครบางคน อื่น ๆ ไม่มากของการทำงานอย่างหนักสำหรับผม 474 00:23:40,580 --> 00:23:43,120 >> แต่สิ่งที่ถ้าโทรศัพท์ หนังสือที่ได้รับไม่ได้เรียงลำดับ? 475 00:23:43,120 --> 00:23:47,050 บางที Verizon ได้ขี้เกียจเพียงแค่โยน ชื่อของทุกคนและตัวเลขในการมี 476 00:23:47,050 --> 00:23:50,120 อาจจะอยู่ในลำดับที่พวกเขา สมัครใช้บริการโทรศัพท์ 477 00:23:50,120 --> 00:23:54,570 และเวลาเท่าไรไม่ก็พาฉัน ที่จะหาคนที่ชอบไมค์สมิ ธ 478 00:23:54,570 --> 00:23:58,160 โทรศัพท์หน้า 1,000 book-- หลายวิธี หน้าฉันจะต้องมองผ่าน? 479 00:23:58,160 --> 00:23:58,905 >> ทั้งหมด. 480 00:23:58,905 --> 00:24:00,030 คุณเรียงลำดับของการออกจากโชค 481 00:24:00,030 --> 00:24:03,420 คุณอย่างแท้จริงต้องมองไปที่ทุก หน้าถ้าสมุดโทรศัพท์เป็นเพียง 482 00:24:03,420 --> 00:24:04,450 เรียงแบบสุ่ม 483 00:24:04,450 --> 00:24:06,910 คุณอาจได้รับโชคดีและหาไมค์ ในหน้าแรกมากเพราะเขา 484 00:24:06,910 --> 00:24:08,826 เป็นลูกค้ารายแรก การสั่งซื้อบริการโทรศัพท์ 485 00:24:08,826 --> 00:24:10,760 แต่เขาอาจจะเป็นครั้งสุดท้ายเกินไป 486 00:24:10,760 --> 00:24:12,500 >> เพื่อสุ่มดังนั้นไม่ดี 487 00:24:12,500 --> 00:24:16,750 ดังนั้นสมมติว่าเรามีการจัดเรียง สมุดโทรศัพท์หรือในการเรียงลำดับข้อมูลทั่วไป 488 00:24:16,750 --> 00:24:18,520 ที่เราได้รับ 489 00:24:18,520 --> 00:24:19,440 วิธีที่เราสามารถทำเช่นนั้น? 490 00:24:19,440 --> 00:24:21,360 >> ดีให้ฉันเพียงแค่พยายาม ตัวอย่างง่ายๆที่นี่ 491 00:24:21,360 --> 00:24:24,290 ให้ฉันไปข้างหน้าและโยน จำนวนน้อยบนกระดาน 492 00:24:24,290 --> 00:24:35,480 สมมติว่าตัวเลขที่เรามีอยู่ สมมติว่าสี่สองหนึ่งและสาม 493 00:24:35,480 --> 00:24:38,390 และเบนเรียงลำดับตัวเลขเหล่านี้สำหรับเรา 494 00:24:38,390 --> 00:24:39,017 >> OK ดี. 495 00:24:39,017 --> 00:24:39,850 คุณทำได้อย่างไร? 496 00:24:39,850 --> 00:24:42,731 497 00:24:42,731 --> 00:24:43,230 ก็ดี 498 00:24:43,230 --> 00:24:44,710 ดังนั้นการเริ่มต้นมีขนาดเล็กที่สุด และค่าสูงสุด 499 00:24:44,710 --> 00:24:46,084 และนั่นคือสัญชาตญาณที่ดีจริงๆ 500 00:24:46,084 --> 00:24:48,080 และตระหนักถึงเราที่ มนุษย์จะสวยจริง 501 00:24:48,080 --> 00:24:49,913 ที่ดีในการแก้ปัญหา เช่นนี้อย่างน้อย 502 00:24:49,913 --> 00:24:51,810 เมื่อข้อมูลมีขนาดค่อนข้างเล็ก 503 00:24:51,810 --> 00:24:54,860 เร็วที่สุดเท่าที่คุณจะเริ่มมีหลายร้อย ของจำนวนหลายพันคนของตัวเลข 504 00:24:54,860 --> 00:24:58,440 ล้านหมายเลขเบนอาจจะ ไม่สามารถทำมันค่อนข้างรวดเร็ว 505 00:24:58,440 --> 00:25:00,620 สมมติว่ามี ช่องว่างในตัวเลข 506 00:25:00,620 --> 00:25:03,450 สวยง่ายที่จะนับล้าน เวลาเพียงแค่มิฉะนั้นบริโภค 507 00:25:03,450 --> 00:25:07,150 >> ดังนั้นขั้นตอนวิธีที่มันฟัง เช่นเบนใช้เพียงแค่ตอนนี้ 508 00:25:07,150 --> 00:25:08,930 คือการค้นหาสำหรับจำนวนที่น้อยที่สุด 509 00:25:08,930 --> 00:25:12,900 ดังนั้นแม้ว่ามนุษย์เราสามารถใช้ ในข้อมูลจำนวนมากสายตา 510 00:25:12,900 --> 00:25:14,830 คอมพิวเตอร์เป็นจริง เล็ก ๆ น้อย ๆ ที่ จำกัด มากขึ้น 511 00:25:14,830 --> 00:25:17,560 คอมพิวเตอร์สามารถเท่านั้น มองไปที่หนึ่งไบต์ในเวลา 512 00:25:17,560 --> 00:25:20,770 หรืออาจจะสี่ไบต์ที่ time-- วันนี้อาจจะ 8 ไบต​​์ที่ time-- 513 00:25:20,770 --> 00:25:24,450 แต่จำนวนน้อยมาก ไบต์ในเวลาที่กำหนด 514 00:25:24,450 --> 00:25:28,480 >> ดังนั้นให้ที่เราจริงๆมี สี่ค่าแยกต่างหาก here-- 515 00:25:28,480 --> 00:25:32,440 และคุณอาจจะคิดว่าเบนที่มี blinders บนว่าเขาเป็นเช่นคอมพิวเตอร์ 516 00:25:32,440 --> 00:25:36,450 ว่าเขาไม่สามารถมองเห็นอะไรอื่น ๆ กว่าหนึ่งในจำนวนที่ time-- 517 00:25:36,450 --> 00:25:39,720 ดังนั้นเรามักจะถือว่าเหมือนใน ภาษาอังกฤษเราจะอ่านจากขวาไปซ้าย 518 00:25:39,720 --> 00:25:42,870 ดังนั้นจำนวนแรกเบนอาจจะมอง ที่สี่แล้วอย่างรวดเร็ว 519 00:25:42,870 --> 00:25:44,770 ตระหนักว่าเป็นใหญ่สวย number-- ให้ฉันให้มอง 520 00:25:44,770 --> 00:25:45,357 >> มีสองเรื่อง 521 00:25:45,357 --> 00:25:45,940 เดี๋ยวก่อน. 522 00:25:45,940 --> 00:25:47,070 สองมีขนาดเล็กกว่าสี่ 523 00:25:47,070 --> 00:25:47,986 ฉันจะจำ 524 00:25:47,986 --> 00:25:49,070 สองคือตอนนี้มีขนาดเล็กที่สุด 525 00:25:49,070 --> 00:25:50,417 ตอนนี้ one-- ที่ดียิ่งขึ้น 526 00:25:50,417 --> 00:25:51,250 นั่นคือแม้มีขนาดเล็ก 527 00:25:51,250 --> 00:25:54,000 ฉันจะลืมเกี่ยวกับสอง และเพียงแค่จำได้ในขณะนี้ 528 00:25:54,000 --> 00:25:56,550 >> และเขาสามารถหยุดมอง? 529 00:25:56,550 --> 00:25:58,360 ดีที่เขาจะได้ตาม ข้อมูลนี้ 530 00:25:58,360 --> 00:26:00,477 แต่เขาต้องการค้นหาที่ดีขึ้น ส่วนที่เหลือของรายการ 531 00:26:00,477 --> 00:26:02,060 เพราะสิ่งที่ถ้าศูนย์อยู่ในรายการหรือไม่ 532 00:26:02,060 --> 00:26:03,643 เกิดอะไรขึ้นถ้าคนใดคนหนึ่งในเชิงลบในรายการ? 533 00:26:03,643 --> 00:26:07,720 เขารู้ดีว่าคำตอบของเขา ถูกต้องถ้าเขาอย่างละเอียดถี่ถ้วน 534 00:26:07,720 --> 00:26:08,729 ตรวจสอบรายชื่อทั้งหมด 535 00:26:08,729 --> 00:26:10,020 นั้นเรามาดูในส่วนที่เหลือจากนี้ 536 00:26:10,020 --> 00:26:11,394 Three-- ว่าเป็นเรื่องเสียเวลา 537 00:26:11,394 --> 00:26:13,540 โชคร้ายได้ แต่ผมก็ ยังคงถูกต้องในการทำเช่นนั้น 538 00:26:13,540 --> 00:26:17,857 และอื่น ๆ ตอนนี้เขาสันนิษฐานว่า เลือกจำนวนที่เล็กที่สุด 539 00:26:17,857 --> 00:26:20,440 และเพียงแค่ใส่มันที่จุดเริ่มต้น ของรายการที่ผมจะทำที่นี่ 540 00:26:20,440 --> 00:26:23,480 ตอนนี้สิ่งที่คุณต้องทำต่อไปแม้ว่า คุณไม่ได้คิดเกี่ยวกับมันเกือบ 541 00:26:23,480 --> 00:26:25,962 เท่านี้หรือไม่? 542 00:26:25,962 --> 00:26:27,670 ทำซ้ำขั้นตอนที่ ดังนั้นชนิดของห่วงบาง 543 00:26:27,670 --> 00:26:28,920 มีความคิดที่เป็นที่คุ้นเคย 544 00:26:28,920 --> 00:26:30,860 ดังนั้นนี่คือสี่ 545 00:26:30,860 --> 00:26:32,110 ที่กำลังมีขนาดเล็กที่สุด 546 00:26:32,110 --> 00:26:33,220 นั่นคือผู้สมัคร 547 00:26:33,220 --> 00:26:33,900 ไม่อีกแล้ว. 548 00:26:33,900 --> 00:26:34,770 ตอนนี้ผมได้เห็นสอง 549 00:26:34,770 --> 00:26:36,630 นั่นเป็นองค์ประกอบที่เล็กต่อไป 550 00:26:36,630 --> 00:26:40,800 Three-- ที่ไม่ได้มีขนาดเล็กลงเพื่อให้ ตอนนี้เบนสามารถถอนออกมาทั้งสอง 551 00:26:40,800 --> 00:26:44,510 >> และตอนนี้เราทำซ้ำขั้นตอนและ แน่นอนสามได้รับการดึงออกมาต่อไป 552 00:26:44,510 --> 00:26:45,420 ทำซ้ำขั้นตอน 553 00:26:45,420 --> 00:26:46,990 สี่ได้รับการดึงออกมา 554 00:26:46,990 --> 00:26:50,140 และตอนนี้เรากำลังออกของตัวเลข ดังนั้นรายการจะต้องมีการจัดเรียง 555 00:26:50,140 --> 00:26:51,960 >> และแน่นอนนี้เป็นขั้นตอนวิธีการอย่างเป็นทางการ 556 00:26:51,960 --> 00:26:56,610 นักวิทยาศาสตร์คอมพิวเตอร์จะ เรียกสิ่งนี้ว่า "การจัดเรียงตัวเลือก" 557 00:26:56,610 --> 00:27:00,880 คิดถูกจัดเรียง รายการ iteratively-- อีกครั้ง 558 00:27:00,880 --> 00:27:03,807 และอีกครั้งและอีกครั้งเลือก จำนวนที่เล็กที่สุด 559 00:27:03,807 --> 00:27:06,140 และสิ่งที่ดีเกี่ยวกับมัน มันเป็นเพียงเพื่อให้ใช้งานง่ายยี้ 560 00:27:06,140 --> 00:27:07,470 มันเป็นเรื่องง่ายมาก 561 00:27:07,470 --> 00:27:11,100 และคุณสามารถทำซ้ำเดียวกัน การดำเนินการอีกครั้งและอีกครั้ง 562 00:27:11,100 --> 00:27:12,150 มันง่าย 563 00:27:12,150 --> 00:27:17,170 >> ในกรณีนี้มันเร็ว แต่ นานแค่ไหนที่ไม่เป็นจริงใช้เวลา? 564 00:27:17,170 --> 00:27:19,880 ขอให้มันดูและ รู้สึกน่าเบื่อมาก 565 00:27:19,880 --> 00:27:24,150 ดังนั้นหนึ่งสองสามสี่ห้าหก เจ็ดแปดเก้า, 10, 11, 12, 13, 14, 566 00:27:24,150 --> 00:27:26,160 15 16-- จำนวนข้อ 567 00:27:26,160 --> 00:27:28,780 ฉันแค่อยากมากขึ้นนี้ เวลามากกว่าเพียงแค่สี่ 568 00:27:28,780 --> 00:27:30,780 ดังนั้นถ้าฉันมีทั้ง พวงของตัวเลข now-- มัน 569 00:27:30,780 --> 00:27:32,420 ไม่ได้เรื่อง สิ่งที่พวกเขา are-- ของให้ 570 00:27:32,420 --> 00:27:34,380 คิดเกี่ยวกับสิ่งนี้ อัลกอริทึมจริงๆเป็นเหมือน 571 00:27:34,380 --> 00:27:35,857 >> สมมติว่ามีจำนวนที่มี 572 00:27:35,857 --> 00:27:38,190 อีกครั้งไม่สำคัญว่า พวกเขาจะมี แต่พวกเขากำลังสุ่ม 573 00:27:38,190 --> 00:27:39,679 ฉันกำลังใช้อัลกอริทึมของเบน 574 00:27:39,679 --> 00:27:41,220 ฉันจำเป็นต้องเลือกหมายเลขที่เล็กที่สุด 575 00:27:41,220 --> 00:27:41,761 ฉันจะทำอะไร? 576 00:27:41,761 --> 00:27:44,240 และฉันจะทางร่างกาย ทำมันในครั้งนี้จะทำหน้าที่ออก 577 00:27:44,240 --> 00:27:46,099 มองมอง, มองมองมอง 578 00:27:46,099 --> 00:27:48,140 โดยเฉพาะเวลาที่ฉันได้รับการ ตอนท้ายของรายการสามารถ 579 00:27:48,140 --> 00:27:51,230 ผมทราบดีว่ามีขนาดเล็กที่สุด จำนวนสองครั้งนี้ 580 00:27:51,230 --> 00:27:52,720 หนึ่งที่ไม่อยู่ในรายการ 581 00:27:52,720 --> 00:27:54,400 ดังนั้นผมจึงใส่ลงไปอีกสอง 582 00:27:54,400 --> 00:27:55,590 >> ฉันจะทำอะไรต่อไป 583 00:27:55,590 --> 00:27:58,600 มองมองมองมอง 584 00:27:58,600 --> 00:28:02,250 ตอนนี้ผมพบว่าหมายเลขเจ็ดเพราะ มีช่องว่างในเบอร์เหล่านี้ 585 00:28:02,250 --> 00:28:03,300 แต่เพียงโดยพลการ 586 00:28:03,300 --> 00:28:03,800 ก็ดี 587 00:28:03,800 --> 00:28:06,030 ดังนั้นตอนนี้ฉันสามารถใส่ลงเจ็ด 588 00:28:06,030 --> 00:28:08,860 มองมองมอง 589 00:28:08,860 --> 00:28:11,030 >> ตอนนี้ฉันสมมติของ แน่นอนว่าเบนไม่ได้ 590 00:28:11,030 --> 00:28:14,780 มี RAM เสริมพิเศษ หน่วยความจำเพราะของหลักสูตร 591 00:28:14,780 --> 00:28:16,080 ฉันกำลังมองหาที่บ้านเลขที่เดียวกัน 592 00:28:16,080 --> 00:28:18,246 แน่นอนฉันจะได้จำได้ ทั้งหมดของตัวเลขเหล่านั้น 593 00:28:18,246 --> 00:28:19,930 และนั่นคือความจริงอย่างแน่นอน 594 00:28:19,930 --> 00:28:22,610 แต่ถ้าเบนจำทั้งหมด ของตัวเลขที่เขาเห็น 595 00:28:22,610 --> 00:28:24,430 เขาไม่ได้ทำจริงๆ ความคืบหน้าขั้นพื้นฐาน 596 00:28:24,430 --> 00:28:26,170 เพราะเขามีอยู่แล้ว ความสามารถในการค้นหา 597 00:28:26,170 --> 00:28:27,540 ผ่านตัวเลขบนกระดาน 598 00:28:27,540 --> 00:28:29,373 ความทรงจำทั้งหมดของ ตัวเลขไม่ได้ช่วย 599 00:28:29,373 --> 00:28:32,490 เพราะเขายังคงสามารถเป็นเครื่องคอมพิวเตอร์ เพียง แต่มองที่เราได้กล่าวว่าจำนวนหนึ่ง 600 00:28:32,490 --> 00:28:33,080 ขณะนั้น. 601 00:28:33,080 --> 00:28:35,760 ดังนั้นจึงมีการจัดเรียงของการโกงไม่มี มีที่คุณสามารถใช้ประโยชน์จาก 602 00:28:35,760 --> 00:28:39,170 >> ดังนั้นในความเป็นจริงที่ผม ให้การค้นหารายการ 603 00:28:39,170 --> 00:28:44,200 แท้จริงฉันมีเพียงแค่เก็บไป กลับมาผ่านมันถอนขนออก 604 00:28:44,200 --> 00:28:45,710 จำนวนที่น้อยที่สุดต่อไป 605 00:28:45,710 --> 00:28:48,810 และเป็นชนิดที่คุณสามารถอนุมาน จากการเคลื่อนไหวโง่ของฉัน 606 00:28:48,810 --> 00:28:50,860 นี้เพิ่งได้รับมาก น่าเบื่อมากได้อย่างรวดเร็ว 607 00:28:50,860 --> 00:28:54,850 และฉันดูเหมือนจะไปและกลับ มากลับมาไม่น้อย 608 00:28:54,850 --> 00:29:03,220 ตอนนี้จะเป็นธรรมผมไม่ต้องไป ค่อนข้างเป็นที่ดีขอ see-- เป็นธรรม 609 00:29:03,220 --> 00:29:06,310 ฉันไม่ต้องเดินค่อนข้าง ขั้นตอนต่อไปเป็นจำนวนมากในแต่ละครั้ง 610 00:29:06,310 --> 00:29:09,200 เพราะของหลักสูตรที่ผม เลือกหมายเลขจากรายการ 611 00:29:09,200 --> 00:29:11,860 รายการที่เหลือจะรับสั้น 612 00:29:11,860 --> 00:29:14,240 >> และเพื่อให้คิดเกี่ยวกับ วิธีการหลายขั้นตอนฉันจริง 613 00:29:14,240 --> 00:29:16,010 traipsing ผ่านในแต่ละครั้ง 614 00:29:16,010 --> 00:29:18,950 ในสถานการณ์แรก เรามี 16 ตัวเลข 615 00:29:18,950 --> 00:29:22,210 และเพื่อให้ maximally-- ให้เพียง ทำเช่นนี้สำหรับ discussion-- 616 00:29:22,210 --> 00:29:25,640 ผมมองผ่าน 16 ตัวเลขเพื่อหาสิ่งที่มีขนาดเล็กที่สุด 617 00:29:25,640 --> 00:29:28,420 แต่เมื่อผมดึงออก จำนวนที่น้อยที่สุดวิธี 618 00:29:28,420 --> 00:29:30,590 ยาวเป็นรายการที่เหลือแน่นอน? 619 00:29:30,590 --> 00:29:31,420 เพียง 15 620 00:29:31,420 --> 00:29:34,670 ดังนั้นวิธีการที่จำนวนตัวเลขได้เบนหรือฉันมี ที่จะมองผ่านครั้งที่สองในรอบ? 621 00:29:34,670 --> 00:29:36,832 15 เพียงเพื่อไปหาที่เล็กที่สุด 622 00:29:36,832 --> 00:29:39,540 แต่ตอนนี้แน่นอนรายการคือ เกินไปมีขนาดเล็กลงกว่า แต่ก่อน 623 00:29:39,540 --> 00:29:42,540 ดังนั้นขั้นตอนวิธีการหลายไม่ฉัน ต้องใช้เวลาต่อไปหรือไม่ 624 00:29:42,540 --> 00:29:49,970 14 แล้ว 13 แล้ว 12 บวกจุด จุดจุดจนกว่าฉันซ้ายที่มีเพียงหนึ่ง 625 00:29:49,970 --> 00:29:53,146 ดังนั้นตอนนี้นักวิทยาศาสตร์คอมพิวเตอร์จะ ขอให้ดีสิ่งที่ไม่ว่าทั้งหมดเท่ากัน? 626 00:29:53,146 --> 00:29:55,770 มันจริงเท่ากับคอนกรีตบางส่วน ตัวเลขที่เราสามารถทำได้อย่างแน่นอน 627 00:29:55,770 --> 00:30:00,490 ทำ arithmetically แต่เราต้องการที่จะพูดคุย เกี่ยวกับประสิทธิภาพของอัลกอริทึม 628 00:30:00,490 --> 00:30:04,940 เล็ก ๆ น้อย ๆ formulaically, เป็นอิสระจากนานเท่าใดรายการเป็น 629 00:30:04,940 --> 00:30:06,240 >> และเพื่อให้คุณรู้อะไรไหม 630 00:30:06,240 --> 00:30:09,860 นี้คือ 16 แต่เหมือนที่ผมกล่าวก่อน ขอเพียงแค่โทรหาขนาดของปัญหา 631 00:30:09,860 --> 00:30:10,970 n โดยที่ n คือจำนวนบาง 632 00:30:10,970 --> 00:30:13,220 บางทีมันอาจจะ 16 บางทีมันอาจจะ สามบางทีมันอาจจะเป็นล้าน 633 00:30:13,220 --> 00:30:13,761 ฉันไม่รู้ 634 00:30:13,761 --> 00:30:14,390 ฉันไม่สนใจ 635 00:30:14,390 --> 00:30:16,520 สิ่งที่ฉันต้องการจริงๆคือ สูตรที่ผมสามารถทำได้ 636 00:30:16,520 --> 00:30:19,420 ใช้ในการเปรียบเทียบขั้นตอนวิธีนี้ กับขั้นตอนวิธีการอื่น ๆ 637 00:30:19,420 --> 00:30:22,350 ที่บางคนอาจจะเรียกร้อง จะดีขึ้นหรือแย่ลง 638 00:30:22,350 --> 00:30:25,430 >> ดังนั้นมันจะเปิดออกและฉันเท่านั้น รู้เรื่องนี้จากโรงเรียนเกรด 639 00:30:25,430 --> 00:30:34,790 ที่ว่านี้ใช้งานได้จริงออกไปเหมือนกัน สิ่งที่เป็นมากกว่า n n บวกหนึ่งมากกว่าสอง 640 00:30:34,790 --> 00:30:40,020 และสิ่งนี้เกิดขึ้นให้เท่ากับของ แน่นอน n สองบวก n มากกว่าสอง 641 00:30:40,020 --> 00:30:43,250 ดังนั้นถ้าผมต้องการสูตร สำหรับขั้นตอนวิธีการหลาย 642 00:30:43,250 --> 00:30:46,330 มีส่วนร่วมในการมองที่ทุกคน ของตัวเลขเหล่านั้นอีกครั้งและอีกครั้ง 643 00:30:46,330 --> 00:30:52,681 และอีกครั้งและอีกครั้งผมจะบอกว่า มันยกกำลังสองบวก n n มากกว่าสอง 644 00:30:52,681 --> 00:30:53,430 แต่คุณรู้อะไรไหม 645 00:30:53,430 --> 00:30:54,500 เพียงแค่นี้ก็ดูยุ่ง 646 00:30:54,500 --> 00:30:56,470 ฉันเพียงแค่ต้องการจริงๆ รู้สึกทั่วไปของสิ่ง 647 00:30:56,470 --> 00:30:58,810 และคุณอาจจะจำได้จาก โรงเรียนมัธยมที่มี 648 00:30:58,810 --> 00:31:00,660 เป็นความคิดของคำสั่งซื้อสูงสุด 649 00:31:00,660 --> 00:31:05,300 ซึ่งเงื่อนไขเหล่านี้ที่ n สแควร์, N หรือครึ่ง 650 00:31:05,300 --> 00:31:07,550 มีผลกระทบมากที่สุดในช่วงเวลา? 651 00:31:07,550 --> 00:31:11,920 n ที่มีขนาดใหญ่ได้รับซึ่ง เรื่องเหล่านี้มากที่สุด? 652 00:31:11,920 --> 00:31:15,560 >> ในคำอื่น ๆ ถ้าผมเสียบ ในล้าน, N ยืด 653 00:31:15,560 --> 00:31:17,900 เป็นไปได้ที่มีแนวโน้มมากที่สุด ปัจจัยที่ครอบครอง 654 00:31:17,900 --> 00:31:21,670 เพราะเป็นล้านเท่า ตัวเองเป็นใหญ่มาก 655 00:31:21,670 --> 00:31:23,682 กว่าบวกอีกหนึ่งล้าน 656 00:31:23,682 --> 00:31:24,390 เพื่อให้คุณรู้อะไรไหม 657 00:31:24,390 --> 00:31:27,305 นี้เป็นเช่นสาปขนาดใหญ่ จำนวนถ้าคุณตารางตัวเลข 658 00:31:27,305 --> 00:31:28,430 นี้ไม่ได้เรื่องจริงๆ 659 00:31:28,430 --> 00:31:30,596 เรากำลังจะข้ามว่า ออกมาและลืมเกี่ยวกับมัน 660 00:31:30,596 --> 00:31:34,250 และเพื่อให้นักวิทยาศาสตร์คอมพิวเตอร์จะบอกว่า ว่าประสิทธิภาพของขั้นตอนวิธีนี้ 661 00:31:34,250 --> 00:31:37,850 อยู่ในลำดับของ n squared-- ผมหมายถึงอย่างแท้จริงประมาณ 662 00:31:37,850 --> 00:31:40,810 เป็นประเภทของประมาณยืด n 663 00:31:40,810 --> 00:31:44,130 ในช่วงเวลาที่ใหญ่กว่า n และขนาดใหญ่ที่ได้รับนี้ 664 00:31:44,130 --> 00:31:47,610 เป็นสิ่งที่ดีสำหรับการประมาณว่า ประสิทธิภาพหรือขาดประสิทธิภาพ 665 00:31:47,610 --> 00:31:49,400 ขั้นตอนวิธีการนี​​้เป็นจริง 666 00:31:49,400 --> 00:31:52,040 และฉันได้รับมานั้นแน่นอน จากการทำจริงคณิตศาสตร์ 667 00:31:52,040 --> 00:31:54,040 แต่ตอนนี้ฉันแค่โบก มือของฉันเพราะฉันเพียงแค่ 668 00:31:54,040 --> 00:31:55,790 ต้องการความรู้สึกทั่วไปของขั้นตอนวิธีนี้ 669 00:31:55,790 --> 00:31:58,850 >> ดังนั้นการใช้ตรรกะเดียวกันในขณะเดียวกัน ให้พิจารณาขั้นตอนวิธีการอื่น 670 00:31:58,850 --> 00:32:01,162 เรามีอยู่แล้วมอง at-- ค้นหาเชิงเส้น 671 00:32:01,162 --> 00:32:02,870 เมื่อฉันถูกค้นหา สำหรับ book-- โทรศัพท์ 672 00:32:02,870 --> 00:32:05,980 ไม่ได้เรียงลำดับการค้นหา ผ่าน book-- โทรศัพท์ 673 00:32:05,980 --> 00:32:09,197 เราเก็บไว้บอกว่ามันเป็น 1,000 ขั้นตอนหรือ 500 ขั้นตอน 674 00:32:09,197 --> 00:32:10,280 แต่ขอคุยว่า 675 00:32:10,280 --> 00:32:12,860 หากมี n หน้าใน สมุดโทรศัพท์อะไร 676 00:32:12,860 --> 00:32:17,250 เวลาทำงานหรือ ประสิทธิภาพของการค้นหาเชิงเส้น? 677 00:32:17,250 --> 00:32:19,750 มันอยู่ในคำสั่งของ วิธีการหลายขั้นตอนในการค้นหา 678 00:32:19,750 --> 00:32:24,210 ไมค์สมิ ธ โดยใช้การค้นหาเชิงเส้น อัลกอริทึมแรกหรือแม้กระทั่งที่สอง? 679 00:32:24,210 --> 00:32:27,240 680 00:32:27,240 --> 00:32:31,710 >> ในกรณีที่เลวร้ายที่สุดไมค์ คือในตอนท้ายของหนังสือเล่มนี้ 681 00:32:31,710 --> 00:32:35,590 ดังนั้นถ้าสมุดโทรศัพท์มี 1,000 หน้า เรากล่าวว่าครั้งสุดท้ายในกรณีที่เลวร้ายที่สุด 682 00:32:35,590 --> 00:32:38,380 มันอาจจะใช้เวลาประมาณวิธี หลายหน้าเพื่อหาไมค์? 683 00:32:38,380 --> 00:32:38,990 เช่น 1,000 684 00:32:38,990 --> 00:32:39,830 มันเป็นขอบเขตบน 685 00:32:39,830 --> 00:32:41,790 มันเป็นสถานการณ์ที่เลวร้ายที่สุด 686 00:32:41,790 --> 00:32:44,410 แต่อีกครั้งที่เรากำลังจะย้ายออกไป จากตัวเลขเช่น 1,000 ในขณะนี้ 687 00:32:44,410 --> 00:32:45,730 มันเป็นเพียง n 688 00:32:45,730 --> 00:32:47,470 >> ดังนั้นสิ่งที่เป็นข้อสรุปเชิงตรรกะ? 689 00:32:47,470 --> 00:32:50,210 หาไมค์ในโทรศัพท์ หนังสือที่มีหน้า n 690 00:32:50,210 --> 00:32:55,280 อาจใช้ในกรณีที่เลวร้ายมาก วิธีการหลายขั้นตอนในการสั่งซื้อของ n? 691 00:32:55,280 --> 00:32:58,110 และแน่นอนคอมพิวเตอร์ นักวิทยาศาสตร์จะบอกว่า 692 00:32:58,110 --> 00:33:02,340 ที่เวลาทำงานหรือ ประสิทธิภาพหรือความมีประสิทธิภาพ 693 00:33:02,340 --> 00:33:07,470 หรือการขาดประสิทธิภาพของขั้นตอนวิธีเช่น การค้นหาเชิงเส้นอยู่ในลำดับของ n 694 00:33:07,470 --> 00:33:10,010 และเราสามารถนำไปใช้เหมือนกัน ตรรกะของข้ามอะไรบางอย่างออก 695 00:33:10,010 --> 00:33:13,170 เป็นผมก็ไม่ได้ที่สอง ขั้นตอนวิธีการที่เรามีกับสมุดโทรศัพท์ 696 00:33:13,170 --> 00:33:16,040 ที่เราไปสองหน้าได้ตลอดเวลา 697 00:33:16,040 --> 00:33:20,120 >> ดังนั้นสมุดโทรศัพท์ 1,000 หน้าอาจ พาเรา 500 หน้าผลัดบวกหนึ่ง 698 00:33:20,120 --> 00:33:21,910 ถ้าเราสองเท่ากลับบิต 699 00:33:21,910 --> 00:33:26,590 ดังนั้นถ้าสมุดโทรศัพท์มีหน้า n แต่ เรากำลังทำสองหน้าในเวลา 700 00:33:26,590 --> 00:33:28,900 ที่คร่าว ๆ ว่า? 701 00:33:28,900 --> 00:33:33,190 N มากกว่าสองเพื่อให้เป็นเช่น n มากกว่าสอง 702 00:33:33,190 --> 00:33:38,490 แต่ผมทำเรียกร้อง ช่วงเวลาที่ผ่านมาว่า n มากกว่า two-- 703 00:33:38,490 --> 00:33:41,060 ว่าเป็นชนิดเดียวกับเพียง n 704 00:33:41,060 --> 00:33:44,050 มันเป็นเพียงปัจจัยคงที่ นักวิทยาศาสตร์คอมพิวเตอร์จะบอกว่า 705 00:33:44,050 --> 00:33:45,970 Let 's เพียง แต่มุ่งเน้น ตัวแปร really-- 706 00:33:45,970 --> 00:33:47,780 ตัวแปรที่ใหญ่ที่สุดในสมการ 707 00:33:47,780 --> 00:33:52,530 >> ค้นหาเพื่อให้เส้นไม่ว่าจะทำอย่างใดอย่างหนึ่ง หน้าในเวลาหนึ่งหรือสองหน้าในเวลา 708 00:33:52,530 --> 00:33:54,810 เป็นประเภทของพื้นฐานเดียวกัน 709 00:33:54,810 --> 00:33:56,880 ก็ยังคงเกี่ยวกับคำสั่งของ n 710 00:33:56,880 --> 00:34:01,930 แต่ผมอ้างว่ามีภาพของฉันก่อนหน้านี้ ว่าอัลกอริทึมที่สามไม่ได้ 711 00:34:01,930 --> 00:34:02,480 เชิงเส้น 712 00:34:02,480 --> 00:34:03,605 มันไม่ได้เป็นเส้นตรง 713 00:34:03,605 --> 00:34:08,659 มันเป็นเส้นโค้งและ สูตรพีชคณิตมีอะไร? 714 00:34:08,659 --> 00:34:11,812 เข้าสู่ระบบของ n-- เพื่อเข้าสู่ระบบฐานสอง n 715 00:34:11,812 --> 00:34:14,520 และเราไม่ต้องเข้าไปเกินไป รายละเอียดมากเกี่ยวกับลอการิทึมวันนี้ 716 00:34:14,520 --> 00:34:17,394 แต่ส่วนใหญ่นักวิทยาศาสตร์คอมพิวเตอร์จะไม่ แม้จะบอกคุณว่าฐานเป็น 717 00:34:17,394 --> 00:34:20,639 เพราะมันเป็นเพียงแค่ ปัจจัยอย่างต่อเนื่องเพื่อที่จะพูด 718 00:34:20,639 --> 00:34:22,659 ความแตกต่างที่เป็นตัวเลขเพียงเล็กน้อย 719 00:34:22,659 --> 00:34:31,179 และอื่น ๆ นี้จะเป็นเรื่องธรรมดามาก วิธีการใช้คอมพิวเตอร์อย่างเป็นทางการโดยเฉพาะอย่างยิ่ง 720 00:34:31,179 --> 00:34:33,949 นักวิทยาศาสตร์ที่คณะกรรมการหรือ โปรแกรมเมอร์ที่บอร์ดสีขาว 721 00:34:33,949 --> 00:34:36,889 จริงเถียงซึ่ง ขั้นตอนวิธีการที่พวกเขาจะใช้ 722 00:34:36,889 --> 00:34:39,500 หรือสิ่งที่มีประสิทธิภาพ ขั้นตอนวิธีการของพวกเขาคือ 723 00:34:39,500 --> 00:34:42,960 >> และนี่คือสิ่งที่ไม่จำเป็น คุณหารือในรายละเอียดที่ดีใด ๆ 724 00:34:42,960 --> 00:34:47,889 แต่เป็นโปรแกรมเมอร์ที่ดีคือคนที่ ที่มีของแข็งพื้นหลังอย่างเป็นทางการ 725 00:34:47,889 --> 00:34:50,120 เขาสามารถที่จะพูดคุยกับ คุณในชนิดของวิธีนี้ 726 00:34:50,120 --> 00:34:53,350 และจริงให้ ข้อโต้แย้งที่มีคุณภาพเป็น 727 00:34:53,350 --> 00:34:56,870 ทำไมหนึ่งหรืออัลกอริทึม ชิ้นส่วนของซอฟต์แวร์ 728 00:34:56,870 --> 00:35:00,165 จะดีกว่าในบางวิธียังอีก 729 00:35:00,165 --> 00:35:02,540 เพราะคุณสามารถทำได้อย่างแน่นอน เพียงแค่ใช้โปรแกรมของคนคนหนึ่ง 730 00:35:02,540 --> 00:35:04,980 และนับจำนวนวินาที ก็จะใช้เวลาในการจัดเรียงตัวเลขบาง 731 00:35:04,980 --> 00:35:06,710 และคุณสามารถเรียกใช้บางส่วน โปรแกรมบุคคลอื่น 732 00:35:06,710 --> 00:35:08,418 และนับจำนวน วินาทีก็จะใช้เวลา 733 00:35:08,418 --> 00:35:12,840 แต่นี้เป็นวิธีทั่วไปมากขึ้นว่า คุณสามารถใช้ในการวิเคราะห์ขั้นตอนวิธีการ 734 00:35:12,840 --> 00:35:15,520 ถ้าคุณจะเพียงแค่ใน กระดาษหรือเพียงแค่วาจา 735 00:35:15,520 --> 00:35:18,430 โดยไม่ได้ใช้มันโดยไม่ต้อง ได้พยายามปัจจัยการผลิตตัวอย่าง 736 00:35:18,430 --> 00:35:20,180 คุณก็สามารถผ่านมันเหตุผล 737 00:35:20,180 --> 00:35:24,670 และเพื่อให้มีการว่าจ้างนักพัฒนาหรือถ้า มีเขาหรือเธอเรียงลำดับของเถียงกับคุณ 738 00:35:24,670 --> 00:35:28,460 ทำไมขั้นตอนวิธีการของพวกเขาลับของพวกเขา ซอสสำหรับการค้นหาพันล้าน 739 00:35:28,460 --> 00:35:30,580 หน้าเว็บของคุณ บริษัท จะดีกว่านี้ 740 00:35:30,580 --> 00:35:33,302 เป็นชนิดของการขัดแย้งพวกเขา ควรจะต้องสามารถที่จะทำให้ 741 00:35:33,302 --> 00:35:35,010 หรืออย่างน้อยเหล่านี้เป็น ชนิดของสิ่งที่ 742 00:35:35,010 --> 00:35:40,211 ที่จะเกิดขึ้นในการอภิปรายที่ อย่างน้อยในการอภิปรายอย่างเป็นทางการมาก 743 00:35:40,211 --> 00:35:40,710 ก็ดี 744 00:35:40,710 --> 00:35:44,400 ดังนั้นเบนเสนอบางสิ่งบางอย่าง เรียงที่เรียกว่าเลือก 745 00:35:44,400 --> 00:35:48,200 แต่ฉันจะเสนอว่ามี วิธีการอื่น ๆ ของการทำเช่นนี้มากเกินไป 746 00:35:48,200 --> 00:35:50,400 สิ่งที่ฉันไม่ชอบ เกี่ยวกับอัลกอริทึมของเบน 747 00:35:50,400 --> 00:35:54,400 คือว่าเขาเก็บไว้เดินหรือ มีผมเดินกลับมา 748 00:35:54,400 --> 00:35:56,930 และกลับมาและกลับมา 749 00:35:56,930 --> 00:36:04,130 เกิดอะไรขึ้นถ้าแทนฉันกำลังจะทำ บางสิ่งบางอย่างเช่นหมายเลขเหล่านี้ที่นี่ 750 00:36:04,130 --> 00:36:08,200 และฉันเป็นเพียงแค่จัดการกับแต่ละ จำนวนในการเปิดเป็นฉันได้รับมันได้หรือไม่ 751 00:36:08,200 --> 00:36:10,780 >> ในคำอื่น ๆ ที่นี่ รายการของตัวเลข 752 00:36:10,780 --> 00:36:12,944 สี่หนึ่งสามสอง 753 00:36:12,944 --> 00:36:14,360 และฉันจะทำต่อไปนี้ 754 00:36:14,360 --> 00:36:17,230 ฉันจะใส่ตัวเลข ที่พวกเขาอยู่ค่อนข้าง 755 00:36:17,230 --> 00:36:18,980 กว่าการเลือกพวกเขาในช่วงเวลาหนึ่ง 756 00:36:18,980 --> 00:36:20,820 ในคำอื่น ๆ ที่นี่เป็นจำนวนสี่ 757 00:36:20,820 --> 00:36:22,430 >> นี่คือรายการเดิมของฉัน 758 00:36:22,430 --> 00:36:25,290 และฉันจะรักษา หลักรายการใหม่ที่นี่ 759 00:36:25,290 --> 00:36:26,710 ดังนั้นนี่คือรายการเก่า 760 00:36:26,710 --> 00:36:28,560 นี่คือรายการใหม่ 761 00:36:28,560 --> 00:36:30,220 ผมเห็นจำนวนสี่คนแรก 762 00:36:30,220 --> 00:36:34,500 รายการใหม่ของฉันคือครั้งแรกที่ว่างเปล่า ดังนั้นมันจึงเป็นนิด ๆ กรณี 763 00:36:34,500 --> 00:36:36,410 ว่าสี่สารพันรายการในขณะนี้ 764 00:36:36,410 --> 00:36:39,560 ฉันเพียงแค่การจำนวนฉันได้รับ และฉันวางไว้ในรายการใหม่ของฉัน 765 00:36:39,560 --> 00:36:41,460 >> เป็นรายการใหม่นี้เรียง? 766 00:36:41,460 --> 00:36:41,990 ใช่. 767 00:36:41,990 --> 00:36:45,090 มันโง่เพราะมีเพียงหนึ่ง องค์ประกอบ แต่มันเรียงอย่างแน่นอน 768 00:36:45,090 --> 00:36:46,390 ไม่มีอะไรที่ออกจากสถานที่ 769 00:36:46,390 --> 00:36:49,290 มันน่าสนใจมากขึ้นขั้นตอนวิธีการนี​​้ เมื่อฉันย้ายไปยังขั้นตอนต่อไป 770 00:36:49,290 --> 00:36:50,550 >> ตอนนี้ฉันมีหนึ่ง 771 00:36:50,550 --> 00:36:55,430 ดังนั้นหนึ่งของหลักสูตรเป็นที่ จุดเริ่มต้นหรือจุดสิ้นสุดของรายการใหม่นี้หรือไม่? 772 00:36:55,430 --> 00:36:56,360 การเริ่มต้น. 773 00:36:56,360 --> 00:36:58,530 ดังนั้นผมจึงต้องทำงานบางอย่างในขณะนี้ 774 00:36:58,530 --> 00:37:01,410 ฉันได้รับการบางอย่าง เสรีภาพที่มีเครื่องหมายของฉัน 775 00:37:01,410 --> 00:37:03,120 โดยเพียงแค่การวาดภาพสิ่งที่ ที่ฉันต้องการพวกเขา 776 00:37:03,120 --> 00:37:05,320 แต่ที่ไม่ได้จริงๆ ถูกต้องในการใช้คอมพิวเตอร์ 777 00:37:05,320 --> 00:37:08,530 คอมพิวเตอร์ที่เรารู้ว่ามี RAM หรือ Random Access Memory, 778 00:37:08,530 --> 00:37:12,411 และนั่นก็คือหนึ่งไบต์และ ไบต์อื่นและอีกไบต์ 779 00:37:12,411 --> 00:37:14,910 และถ้าคุณมีกิกะไบต์ของ RAM, คุณมีพันล้านไบต์ 780 00:37:14,910 --> 00:37:16,680 แต่พวกเขากำลังทางร่างกายในสถานที่หนึ่ง 781 00:37:16,680 --> 00:37:19,540 คุณก็ไม่สามารถย้ายสิ่งรอบ ๆ โดยการวาดลงบนกระดาน 782 00:37:19,540 --> 00:37:20,750 ที่ไหนก็ได้ที่คุณต้องการ. 783 00:37:20,750 --> 00:37:24,090 ดังนั้นหากรายการใหม่ของฉันมี สี่สถานที่ในหน่วยความจำ 784 00:37:24,090 --> 00:37:27,480 แต่น่าเสียดายที่สี่คือ อยู่ในสถานที่ที่ไม่ถูกต้อง 785 00:37:27,480 --> 00:37:30,410 >> ดังนั้นเพื่อแทรกจำนวนหนึ่ง ฉันไม่สามารถเพียงแค่วาดได้ที่นี่ 786 00:37:30,410 --> 00:37:31,901 สถานที่ตั้งของหน่วยความจำนี้ไม่ได้อยู่ 787 00:37:31,901 --> 00:37:35,150 ที่จะโกงและฉันได้รับ โกง pictorially ไม่กี่นาที 788 00:37:35,150 --> 00:37:35,800 ที่นี่ 789 00:37:35,800 --> 00:37:40,950 ดังนั้นจริงๆถ้าผมต้องการที่จะนำหนึ่งที่นี่ ฉันต้องคัดลอกสี่ชั่วคราว 790 00:37:40,950 --> 00:37:43,030 แล้วใส่หนึ่งมี 791 00:37:43,030 --> 00:37:45,500 >> ที่ดีที่ถูกต้อง ที่เป็นไปได้ในทางเทคนิค 792 00:37:45,500 --> 00:37:48,410 แต่รู้ว่าเป็นงานพิเศษ 793 00:37:48,410 --> 00:37:50,460 ผมไม่ได้เป็นเพียงแค่ใส่หมายเลขในสถานที่ 794 00:37:50,460 --> 00:37:53,026 ครั้งแรกที่ผมต้องย้าย จำนวนแล้ววางไว้ในสถานที่ 795 00:37:53,026 --> 00:37:54,650 ดังนั้นฉันชนิดของสองเท่าจำนวนเงินของการทำงานของฉัน 796 00:37:54,650 --> 00:37:55,660 ดังนั้นให้ทราบว่า 797 00:37:55,660 --> 00:37:57,120 >> แต่ฉันทำตอนนี้มีองค์ประกอบนี้ 798 00:37:57,120 --> 00:37:59,056 ตอนนี้ผมต้องการที่จะคว้าหมายเลขสาม 799 00:37:59,056 --> 00:38:00,430 ที่แน่นอนไม่ได้เป็นสมาชิก? 800 00:38:00,430 --> 00:38:01,480 ในระหว่าง. 801 00:38:01,480 --> 00:38:03,650 ฉันไม่สามารถโกงอีกต่อไป และเพียงแค่ใส่มันมี 802 00:38:03,650 --> 00:38:06,770 เพราะครั้งนี้หน่วยความจำ อยู่ในสถานที่ทางกายภาพ 803 00:38:06,770 --> 00:38:10,900 ดังนั้นผมจึงมีการคัดลอกสี่ และใส่สามมากกว่าที่นี่ 804 00:38:10,900 --> 00:38:11,550 ไม่ใช่เรื่องใหญ่. 805 00:38:11,550 --> 00:38:14,610 มันเป็นเพียงหนึ่งขั้นตอนพิเศษ again-- รู้สึกไม่แพงมาก 806 00:38:14,610 --> 00:38:16,445 >> แต่ตอนนี้ผมย้ายไปสอง 807 00:38:16,445 --> 00:38:17,820 ทั้งสองของหลักสูตรเป็นของที่นี่ 808 00:38:17,820 --> 00:38:20,990 ตอนนี้คุณเริ่มที่จะดูว่า การทำงานสามารถกองพะเนินเทินทึก 809 00:38:20,990 --> 00:38:23,520 ตอนนี้สิ่งที่ฉันต้องทำอย่างไร 810 00:38:23,520 --> 00:38:28,570 ใช่ฉันต้องย้ายทั้งสี่ จากนั้นผมก็ต้องคัดลอกสาม 811 00:38:28,570 --> 00:38:31,200 และตอนนี้ฉันสามารถแทรกสอง 812 00:38:31,200 --> 00:38:34,460 และจับกับเรื่องนี้ ขั้นตอนวิธีการที่น่าสนใจพอ 813 00:38:34,460 --> 00:38:41,050 คือว่าสมมติว่าเรามีมากขึ้น กรณีที่มันเป็นสมมติว่าแปดเจ็ด 814 00:38:41,050 --> 00:38:45,150 หกห้าสี่สามสองหนึ่ง 815 00:38:45,150 --> 00:38:49,450 นี่คือในบริบทที่หลาย ๆ สถานการณ์กรณีที่เลวร้ายที่สุด 816 00:38:49,450 --> 00:38:51,570 เพราะสิ่งยี้ เป็นอักษรข้างหลัง 817 00:38:51,570 --> 00:38:53,670 >> มันไม่ได้จริงๆ ส่งผลกระทบต่อขั้นตอนวิธีการของเบน 818 00:38:53,670 --> 00:38:55,940 เพราะในการเลือกของเบน การจัดเรียงเขาจะให้ 819 00:38:55,940 --> 00:38:58,359 จะกลับมาผ่านรายการ 820 00:38:58,359 --> 00:39:01,150 และเพราะเขากำลังมองเสมอ ผ่านรายการที่เหลืออยู่ทั้งหมด 821 00:39:01,150 --> 00:39:02,858 ชั่งหัวมัน ที่มีองค์ประกอบ 822 00:39:02,858 --> 00:39:05,630 แต่ในกรณีนี้มีการแทรกของฉัน approach-- ลองนี้ 823 00:39:05,630 --> 00:39:08,616 >> ดังนั้นหนึ่งสองสามสี่ ห้าหกเจ็ดแปด 824 00:39:08,616 --> 00:39:11,630 หนึ่งสองสามสี่, ห้าหกเจ็ดแปด 825 00:39:11,630 --> 00:39:14,320 ฉันจะใช้เวลาแปด และฉันไม่ใส่มันอยู่ที่ไหน 826 00:39:14,320 --> 00:39:17,260 ดีที่จุดเริ่มต้นของรายการของฉัน เพราะรายการใหม่นี้จะถูกจัดเรียง 827 00:39:17,260 --> 00:39:18,760 และฉันข้ามมันออกมา 828 00:39:18,760 --> 00:39:20,551 >> ฉันจะวางเจ็ดที่ไหน? 829 00:39:20,551 --> 00:39:21,050 ยี้มัน 830 00:39:21,050 --> 00:39:23,174 มันต้องไปที่นั่นเพื่อให้ ฉันต้องทำการคัดลอกบางส่วน 831 00:39:23,174 --> 00:39:26,820 832 00:39:26,820 --> 00:39:28,480 และตอนนี้เจ็ดที่นี่ 833 00:39:28,480 --> 00:39:29,860 ตอนนี้ผมย้ายไปหก 834 00:39:29,860 --> 00:39:30,980 ตอนนี้ก็ทำงานมากยิ่งขึ้น 835 00:39:30,980 --> 00:39:32,570 >> แปดได้ไปที่นี่ 836 00:39:32,570 --> 00:39:33,920 เซเว่นได้ไปที่นี่ 837 00:39:33,920 --> 00:39:35,450 ตอนนี้หกสามารถไปที่นี่ 838 00:39:35,450 --> 00:39:37,950 ตอนนี้ผมคว้าห้า 839 00:39:37,950 --> 00:39:40,560 ตอนนี้แปดได้ไป นี่เจ็ดได้ไปที่นี่ 840 00:39:40,560 --> 00:39:43,650 หกได้ไปที่นี่และ ตอนนี้ห้าและทำซ้ำ 841 00:39:43,650 --> 00:39:46,610 และผมสวยมาก ย้ายมันอย่างต่อเนื่อง 842 00:39:46,610 --> 00:39:52,950 >> ดังนั้นในตอนท้าย algorithm-- นี้เราจะ เรียกว่าการแทรก sort-- จริง 843 00:39:52,950 --> 00:39:55,020 มีการทำงานมากเกินไป 844 00:39:55,020 --> 00:39:56,970 มันแตกต่างกันเพียง ชนิดของการทำงานกว่าเบน 845 00:39:56,970 --> 00:40:00,090 การทำงานของเบนมีฉันไป ไปมาตลอดเวลา 846 00:40:00,090 --> 00:40:03,510 เลือกต่อไปมีขนาดเล็กที่สุด องค์ประกอบอีกครั้งและอีกครั้ง 847 00:40:03,510 --> 00:40:06,660 ดังนั้นมันจึงเป็นชนิดนี้มากภาพของการทำงาน 848 00:40:06,660 --> 00:40:10,600 >> นี้ขั้นตอนวิธีการอื่น ๆ ซึ่งยังคงเป็น correct-- ก็จะได้งาน done-- 849 00:40:10,600 --> 00:40:12,800 เพียงแค่เปลี่ยนปริมาณของการทำงาน 850 00:40:12,800 --> 00:40:15,420 ดูเหมือนว่าในตอนแรกคุณ ประหยัดเพราะคุณเพียงแค่ 851 00:40:15,420 --> 00:40:19,190 การจัดการกับแต่ละองค์ประกอบ ขึ้นด้านหน้าโดยไม่ต้องเดินทั้งหมด 852 00:40:19,190 --> 00:40:20,930 ทางผ่านรายการเช่นเบนเป็น 853 00:40:20,930 --> 00:40:25,300 แต่ที่เป็นปัญหาเหล​​่านี้โดยเฉพาะอย่างยิ่งใน กรณีบ้าที่มันทั้งหมดไปข้างหลัง 854 00:40:25,300 --> 00:40:27,830 คุณเพียงแค่ชนิดของ เลื่อนการทำงานอย่างหนัก 855 00:40:27,830 --> 00:40:30,360 จนกว่าคุณจะมีการแก้ไขข้อผิดพลาดของคุณ 856 00:40:30,360 --> 00:40:33,919 >> และดังนั้นหากคุณสามารถคิดนี้ แปดเจ็ดหกห้า 857 00:40:33,919 --> 00:40:36,710 และต่อมาสามสี่และสอง การเคลื่อนย้ายทางของพวกเขาผ่านรายการ 858 00:40:36,710 --> 00:40:39,060 เราได้เปลี่ยนเพียง ประเภทของงานที่เรากำลังทำ 859 00:40:39,060 --> 00:40:42,340 แทนการทำที่ จุดเริ่มต้นของการทำซ้ำของฉัน 860 00:40:42,340 --> 00:40:45,250 ฉันแค่ทำมันที่ ท้ายของทุกซ้ำ 861 00:40:45,250 --> 00:40:50,550 ดังนั้นจึงปรากฎว่าอัลกอริทึมนี้ เกินไปโดยทั่วไปเรียกว่าการแทรกเรียงลำดับ 862 00:40:50,550 --> 00:40:52,190 ยังเป็นคำสั่งของ n ยืด 863 00:40:52,190 --> 00:40:56,480 จริง ๆ แล้วมันไม่มีดีกว่า ไม่ดีที่ทั้งหมด 864 00:40:56,480 --> 00:41:00,810 >> แต่มีวิธีการที่สาม ฉันจะให้กำลังใจเราที่จะต้องพิจารณา 865 00:41:00,810 --> 00:41:02,970 ซึ่งเป็นแบบนี้ 866 00:41:02,970 --> 00:41:07,850 ดังนั้นคิดว่ารายการของฉันสำหรับความเรียบง่าย อีกครั้งเป็นสี่หนึ่งสาม 867 00:41:07,850 --> 00:41:11,080 two-- เพียงตัวเลขสี่ 868 00:41:11,080 --> 00:41:13,300 เบนมีสัญชาตญาณที่ดี สัญชาตญาณของมนุษย์ที่ดี 869 00:41:13,300 --> 00:41:16,340 ก่อนโดยที่เราคงที่ทั้งหมด รายการ eventually-- เรียงแทรก 870 00:41:16,340 --> 00:41:18,020 ผมเกลี้ยกล่อมเราพร้อม 871 00:41:18,020 --> 00:41:22,530 แต่ขอพิจารณา วิธีที่ง่ายที่สุดในการแก้ไขรายการนี​​้ 872 00:41:22,530 --> 00:41:24,110 >> รายการนี​​้ไม่ได้เรียง 873 00:41:24,110 --> 00:41:26,130 ทำไม? 874 00:41:26,130 --> 00:41:31,920 ในภาษาอังกฤษอธิบายว่าทำไม มันไม่ได้เรียงจริง 875 00:41:31,920 --> 00:41:33,400 มันหมายความว่าอะไรที่จะไม่ถูกจัดเรียง? 876 00:41:33,400 --> 00:41:34,220 >> นักศึกษา: มันไม่ได้เรียงตามลำดับ 877 00:41:34,220 --> 00:41:34,990 >> DAVID ลัน: ไม่ได้เรียงตามลำดับ 878 00:41:34,990 --> 00:41:35,822 ให้ฉันตัวอย่าง 879 00:41:35,822 --> 00:41:37,180 >> นักศึกษา: ใส่ไว้ในการสั่งซื้อ 880 00:41:37,180 --> 00:41:37,440 >> DAVID ลัน: OK 881 00:41:37,440 --> 00:41:38,790 ให้ฉันเป็นตัวอย่างที่เฉพาะเจาะจงมากขึ้น 882 00:41:38,790 --> 00:41:39,832 >> นักศึกษา: เรียงลำดับขึ้น 883 00:41:39,832 --> 00:41:41,206 DAVID ลัน: เพื่อไม่น้อยไปหามาก 884 00:41:41,206 --> 00:41:42,100 จะแม่นยำมากขึ้น 885 00:41:42,100 --> 00:41:45,190 ผมไม่ทราบว่าสิ่งที่คุณหมายถึงโดยจากน้อยไปมาก 886 00:41:45,190 --> 00:41:47,150 มีอะไรผิดหรือเปล่า? 887 00:41:47,150 --> 00:41:49,930 >> นักศึกษา: ที่เล็กที่สุดของ ตัวเลขไม่ได้อยู่ในพื้นที่เป็นครั้งแรก 888 00:41:49,930 --> 00:41:51,140 >> DAVID ลัน: จำนวนที่น้อยที่สุดของ ไม่ได้อยู่ในพื้นที่เป็นครั้งแรก 889 00:41:51,140 --> 00:41:52,120 เฉพาะเจาะจงมากขึ้น. 890 00:41:52,120 --> 00:41:55,000 ฉันเริ่มที่จะจับ 891 00:41:55,000 --> 00:41:59,470 เรากำลังนับ แต่ สิ่งที่ออกคำสั่งที่นี่? 892 00:41:59,470 --> 00:42:00,707 >> นักศึกษา: ลำดับตัวเลข 893 00:42:00,707 --> 00:42:02,040 DAVID ลัน: ลำดับตัวเลข 894 00:42:02,040 --> 00:42:04,248 ชนิดของการรักษาของทุกคน มัน here-- ระดับที่สูงมาก 895 00:42:04,248 --> 00:42:07,450 เพียงแค่ตัวอักษรบอกฉันว่า ที่ไม่ถูกต้องเช่นอาจห้าปี 896 00:42:07,450 --> 00:42:08,310 >> นักศึกษา: บวกหนึ่ง 897 00:42:08,310 --> 00:42:08,750 >> DAVID ลัน: สิ่งที่? 898 00:42:08,750 --> 00:42:09,610 >> นักศึกษา: บวกหนึ่ง 899 00:42:09,610 --> 00:42:11,235 >> DAVID ลัน: สิ่งใดที่คุณหมายถึงหนึ่งบวก? 900 00:42:11,235 --> 00:42:12,754 901 00:42:12,754 --> 00:42:14,170 ให้ฉันที่แตกต่างกันห้าปี 902 00:42:14,170 --> 00:42:16,840 903 00:42:16,840 --> 00:42:18,330 มีอะไรผิดปกติแม่? 904 00:42:18,330 --> 00:42:19,940 มีอะไรผิดปกติพ่อ? 905 00:42:19,940 --> 00:42:22,808 คุณหมายถึงอะไรนี้ไม่ได้เรียง? 906 00:42:22,808 --> 00:42:24,370 >> นักศึกษา: มันไม่ได้เป็นสถานที่ที่เหมาะสม 907 00:42:24,370 --> 00:42:25,580 >> DAVID ลัน: มีอะไร ไม่ได้อยู่ในสถานที่ที่เหมาะสมหรือไม่ 908 00:42:25,580 --> 00:42:26,174 >> นักศึกษา: สี่ 909 00:42:26,174 --> 00:42:27,090 DAVID ลัน: ตกลงที่ดี 910 00:42:27,090 --> 00:42:29,110 ดังนั้นสี่ไม่ได้ที่มันควรจะเป็น 911 00:42:29,110 --> 00:42:30,590 โดยเฉพาะอย่างยิ่งเป็นสิทธินี้หรือไม่? 912 00:42:30,590 --> 00:42:33,000 สี่และเป็นหนึ่งในครั้งแรก ตัวเลขสองผมเห็น 913 00:42:33,000 --> 00:42:34,930 นี่คือใช่มั้ย? 914 00:42:34,930 --> 00:42:36,427 ไม่มีพวกเขากำลังออกคำสั่งใช่มั้ย? 915 00:42:36,427 --> 00:42:38,135 ในความเป็นจริงคิดว่าตอนนี้ เกี่ยวกับคอมพิวเตอร์ได้อีกด้วย 916 00:42:38,135 --> 00:42:40,824 มันสามารถมองไปที่อาจจะเป็นหนึ่ง, บางทีสองสิ่งที่ once-- 917 00:42:40,824 --> 00:42:43,240 และที่จริงเพียงสิ่งเดียว ในเวลา แต่อย่างน้อยสามารถ 918 00:42:43,240 --> 00:42:45,790 มองไปที่สิ่งหนึ่งแล้ว สิ่งต่อไปที่ขวาถัดไป 919 00:42:45,790 --> 00:42:47,380 >> ดังนั้นเหล่านี้ในการสั่งซื้อ 920 00:42:47,380 --> 00:42:48,032 ไม่แน่นอน 921 00:42:48,032 --> 00:42:48,740 เพื่อให้คุณรู้อะไรไหม 922 00:42:48,740 --> 00:42:51,020 ทำไมเราไม่ใช้ทารก ขั้นตอนการแก้ไขปัญหานี้ 923 00:42:51,020 --> 00:42:53,410 แทนการทำแฟนซีเหล่านี้ ขั้นตอนวิธีการเช่นเบนที่ 924 00:42:53,410 --> 00:42:56,440 เขาเรียงลำดับของการแก้ไขมันโดย วนลูปผ่านรายการ 925 00:42:56,440 --> 00:42:59,670 แทนการทำสิ่งที่ฉันได้ที่ ฉันเพียงแค่ชนิดของมันคงที่ที่เราไป? 926 00:42:59,670 --> 00:43:03,650 ขอเพียงอย่างแท้จริงทำลายลง ความคิดของลำดับตัวเลข order--, 927 00:43:03,650 --> 00:43:06,990 เรียกมันว่าสิ่งที่คุณ want-- เข้าสู่การเปรียบเทียบจากจำนวนเหล่านี้ 928 00:43:06,990 --> 00:43:07,590 >> และเป็นหนึ่งในสี่ 929 00:43:07,590 --> 00:43:09,970 นี่คือคำสั่งที่ถูกต้องหรือไม่ 930 00:43:09,970 --> 00:43:11,310 ดังนั้นขอให้แก้ไขปัญหาที่ 931 00:43:11,310 --> 00:43:14,700 หนึ่งและสี่แล้ว เราก็จะคัดลอก 932 00:43:14,700 --> 00:43:15,560 สิทธิทั้งหมดที่ดี 933 00:43:15,560 --> 00:43:17,022 ฉันคงหนึ่งและสี่ 934 00:43:17,022 --> 00:43:18,320 สามสอง? 935 00:43:18,320 --> 00:43:18,820 เลขที่ 936 00:43:18,820 --> 00:43:21,690 ให้ตรงกับคำพูดของฉันมือของฉัน 937 00:43:21,690 --> 00:43:23,695 สี่และสาม? 938 00:43:23,695 --> 00:43:27,930 >> มันไม่ได้ในการสั่งซื้อดังนั้นฉันจะ ที่จะทำอย่างใดอย่างหนึ่งสามสี่สอง 939 00:43:27,930 --> 00:43:28,680 OK ดี. 940 00:43:28,680 --> 00:43:32,310 ตอนนี้สี่สอง? 941 00:43:32,310 --> 00:43:33,370 เราจำเป็นต้องแก้ไขปัญหานี้มากเกินไป 942 00:43:33,370 --> 00:43:36,700 ดังนั้นหนึ่งในสามสองสี่ 943 00:43:36,700 --> 00:43:39,820 ดังนั้นมันจึงจะถูกจัดเรียง? 944 00:43:39,820 --> 00:43:43,170 ไม่มี แต่มันเป็นสิ่งที่ใกล้ชิดกับการเรียง? 945 00:43:43,170 --> 00:43:48,930 >> มันเป็นเพราะเราได้รับการแก้ไขนี้ ความผิดพลาดที่เราคงผิดพลาดนี้ 946 00:43:48,930 --> 00:43:50,370 และเราคงผิดพลาดนี้ 947 00:43:50,370 --> 00:43:52,420 ดังนั้นเราจึงคงสามข้อผิดพลาดเนื้อหา 948 00:43:52,420 --> 00:43:58,100 ยังคงไม่ได้จริงๆมองเรียงลำดับ แต่ มันเป็นวัตถุที่ใกล้ชิดกับการเรียงลำดับ 949 00:43:58,100 --> 00:44:00,080 เพราะเราได้รับการแก้ไขบางส่วนของความผิดพลาดเหล่านั้น 950 00:44:00,080 --> 00:44:02,047 >> ตอนนี้สิ่งที่ฉันจะทำต่อไปหรือไม่ 951 00:44:02,047 --> 00:44:03,630 ชนิดของฉันมาถึงจุดสิ้นสุดของรายการ 952 00:44:03,630 --> 00:44:05,680 ฉันดูเหมือนจะได้รับการแก้ไข ทุกความผิดพลาด แต่ไม่มี 953 00:44:05,680 --> 00:44:08,510 เพราะในกรณีนี้ตัวเลขบาง อาจจะมีฟองขึ้นอย่างใกล้ชิด 954 00:44:08,510 --> 00:44:10,410 ไปยังหมายเลขอื่น ๆ ที่ ยังคงมีการออกคำสั่ง 955 00:44:10,410 --> 00:44:12,951 ดังนั้นขอทำมันอีกครั้งและผมจะ เพียงแค่ทำมันในสถานที่เวลานี้ 956 00:44:12,951 --> 00:44:14,170 หนึ่งและสาม? 957 00:44:14,170 --> 00:44:14,720 ทุกอย่างปกติดี. 958 00:44:14,720 --> 00:44:16,070 สามสอง? 959 00:44:16,070 --> 00:44:17,560 ไม่มีแน่นอนจึงขอเปลี่ยนที่ 960 00:44:17,560 --> 00:44:19,160 ดังนั้นสองสาม 961 00:44:19,160 --> 00:44:21,340 สามและสี่? 962 00:44:21,340 --> 00:44:24,370 และตอนนี้ขอเพียงแค่เป็น อวดความรู้โดยเฉพาะอย่างยิ่งที่นี่ 963 00:44:24,370 --> 00:44:26,350 มันจะถูกจัดเรียง? 964 00:44:26,350 --> 00:44:29,280 มนุษย์คุณรู้ว่ามันเรียง 965 00:44:29,280 --> 00:44:30,400 >> ฉันควรจะลองอีกครั้ง 966 00:44:30,400 --> 00:44:31,900 โอลิเวียดังนั้นจะเสนอผมลองอีกครั้ง 967 00:44:31,900 --> 00:44:32,530 ทำไม? 968 00:44:32,530 --> 00:44:35,810 เนื่องจากคอมพิวเตอร์ไม่ได้มี ความหรูหราของตามนุษย์ของเรา 969 00:44:35,810 --> 00:44:38,080 เพียง glancing back-- ตกลงฉันทำ 970 00:44:38,080 --> 00:44:41,610 วิธีการที่ไม่ตรวจสอบคอมพิวเตอร์ ว่ารายการจะถูกจัดเรียงในตอนนี้? 971 00:44:41,610 --> 00:44:44,590 ในทางกลไก 972 00:44:44,590 --> 00:44:47,650 >> ฉันควรจะไปผ่าน อีกครั้งและเพียงถ้าฉัน 973 00:44:47,650 --> 00:44:51,190 ไม่ได้ทำ / พบข้อผิดพลาดใด ๆ ที่สามารถฉัน แล้วสรุปเป็นคอมพิวเตอร์ครับ 974 00:44:51,190 --> 00:44:51,980 เราจะดีไป 975 00:44:51,980 --> 00:44:54,850 ดังนั้นหนึ่งและสองสอง สามสามและสี่ 976 00:44:54,850 --> 00:44:58,030 ตอนนี้ผมสามารถพูดได้อย่างแน่นอนนี้คือ เรียงเพราะผมทำไม่มีการเปลี่ยนแปลง 977 00:44:58,030 --> 00:45:01,940 ตอนนี้มันจะเป็นข้อผิดพลาดและเพียงแค่ โง่ถ้าฉัน, คอมพิวเตอร์ 978 00:45:01,940 --> 00:45:05,640 ถามคำถามเดียวกันนั้นอีกครั้ง คาดหวังว่าคำตอบที่แตกต่างกัน 979 00:45:05,640 --> 00:45:07,110 ไม่ควรเกิดขึ้น 980 00:45:07,110 --> 00:45:08,600 >> และดังนั้นตอนนี้รายการจะเรียง 981 00:45:08,600 --> 00:45:12,630 แต่น่าเสียดายที่เวลาการทำงานของ ขั้นตอนวิธีนี้ยังเป็น n Squared 982 00:45:12,630 --> 00:45:13,130 ทำไม? 983 00:45:13,130 --> 00:45:19,520 เพราะคุณมีตัวเลข n และใน กรณีที่เลวร้ายคุณจะต้องย้ายหมายเลข n 984 00:45:19,520 --> 00:45:23,637 n ครั้งเพราะคุณจะต้องเก็บไป กลับไปตรวจสอบและอาจแก้ไข 985 00:45:23,637 --> 00:45:24,220 ตัวเลขเหล่านี้ 986 00:45:24,220 --> 00:45:26,280 และเราสามารถทำขึ้น การวิเคราะห์อย่างเป็นทางการเกินไป 987 00:45:26,280 --> 00:45:29,530 >> ดังนั้นนี่คือสิ่งที่จะบอกว่าเราได้ดำเนินการ สามวิธีที่แตกต่างกันอย่างใดอย่างหนึ่ง 988 00:45:29,530 --> 00:45:32,210 ของพวกเขาที่ใช้งานง่ายทันที ปิดค้างคาวจากเบน 989 00:45:32,210 --> 00:45:35,170 เพื่อแทรกแนะนำของฉัน การจัดเรียงให้เป็นหนึ่งในนี้ 990 00:45:35,170 --> 00:45:38,540 ที่คุณชนิดของการสูญเสียสายตาของ ป่าสำหรับต้นไม้แรก 991 00:45:38,540 --> 00:45:41,760 แต่แล้วถ้าคุณจะใช้ขั้นตอนกลับ voila เราได้รับการแก้ไขการเรียงลำดับความคิด 992 00:45:41,760 --> 00:45:43,824 ดังนั้นนี่คือกล้าพูดว่า ระดับที่ต่ำกว่าบางที 993 00:45:43,824 --> 00:45:45,740 กว่าบางส่วนของผู้อื่น อัลกอริทึม แต่ขอ 994 00:45:45,740 --> 00:45:48,550 ดูว่าเราไม่สามารถมองเห็นภาพ เหล่านี้โดยวิธีการนี​​้ 995 00:45:48,550 --> 00:45:51,450 >> ดังนั้นนี่คือบางอย่างดี ซอฟแวร์ที่มีคน 996 00:45:51,450 --> 00:45:56,110 เขียนโดยใช้บาร์ที่มีสีสันที่เป็น จะทำต่อไปนี้สำหรับเรา 997 00:45:56,110 --> 00:45:57,736 แต่ละแถบเหล่านี้แสดงให้เห็นถึงตัวเลข 998 00:45:57,736 --> 00:46:00,026 บาร์สูงที่ใหญ่กว่า จำนวนที่มีขนาดเล็กบาร์ 999 00:46:00,026 --> 00:46:00,990 ที่มีขนาดเล็กจำนวน 1000 00:46:00,990 --> 00:46:05,880 ดังนั้นความนึกคิดเราต้องการพีระมิดที่ดี ซึ่งจะเริ่มมีขนาดเล็กและได้รับใหญ่ 1001 00:46:05,880 --> 00:46:08,330 และนั่นจะหมายถึงว่า แถบเหล่านี้จะถูกจัดเรียง 1002 00:46:08,330 --> 00:46:11,200 ดังนั้นฉันจะไปข้างหน้าและเลือก ตัวอย่างเช่นอัลกอริทึมของเบน 1003 00:46:11,200 --> 00:46:13,990 การจัดเรียงตัวเลือก first-- 1004 00:46:13,990 --> 00:46:16,220 >> และสังเกตเห็นสิ่งที่มันทำ 1005 00:46:16,220 --> 00:46:18,670 วิธีที่พวกเขาได้รับเลือกให้เป็น เห็นภาพขั้นตอนวิธีนี้ 1006 00:46:18,670 --> 00:46:22,090 คือว่าเหมือนที่ผมเป็น เดินผ่านรายการของฉัน 1007 00:46:22,090 --> 00:46:24,710 โปรแกรมนี้คือการเดิน ผ่านรายการของตัวเลข 1008 00:46:24,710 --> 00:46:28,160 ไฮไลท์ในสีชมพูแต่ละ ตัวเลขที่มันมองไปที่ 1009 00:46:28,160 --> 00:46:32,360 และสิ่งที่กำลังจะเกิดขึ้นในตอนนี้? 1010 00:46:32,360 --> 00:46:35,154 >> จำนวนที่น้อยที่สุดที่ ฉันหรือเบนพบกึก 1011 00:46:35,154 --> 00:46:36,820 ได้รับการย้ายไปยังจุดเริ่มต้นของรายการ 1012 00:46:36,820 --> 00:46:40,037 และแจ้งให้ทราบว่าพวกเขาไม่ได้ขับไล่ หมายเลขที่อยู่ที่นั่น 1013 00:46:40,037 --> 00:46:41,120 และที่ดีอย่างสมบูรณ์ 1014 00:46:41,120 --> 00:46:42,600 ฉันไม่ได้รับในระดับของรายละเอียดที่ 1015 00:46:42,600 --> 00:46:44,308 แต่เราจำเป็นต้องใส่ ตัวเลขที่อยู่ที่ไหนสักแห่ง 1016 00:46:44,308 --> 00:46:47,775 ดังนั้นเราเพิ่งย้ายไปยัง เปิดจุดที่ถูกสร้างขึ้น 1017 00:46:47,775 --> 00:46:49,900 ดังนั้นฉันจะเพิ่มความเร็วในการนี​​้ ขึ้นเพราะมิฉะนั้นมัน 1018 00:46:49,900 --> 00:46:51,871 กลายเป็นที่น่าเบื่อมากได้อย่างรวดเร็ว 1019 00:46:51,871 --> 00:46:55,800 1020 00:46:55,800 --> 00:46:58,600 แอนิเมชั่ speed-- มีที่เราจะไป 1021 00:46:58,600 --> 00:47:01,850 ดังนั้นตอนนี้หลักการเดียวกัน ผมก็ใช้ แต่คุณ 1022 00:47:01,850 --> 00:47:06,540 สามารถเริ่มต้นที่จะรู้สึกอัลกอริทึมถ้าคุณ จะหรือเห็นมันเล็ก ๆ น้อย ๆ อย่างเห็นได้ชัด 1023 00:47:06,540 --> 00:47:13,190 และขั้นตอนวิธีนี้มีผลกระทบของ การเลือกองค์ประกอบที่เล็กถัดไป 1024 00:47:13,190 --> 00:47:16,422 เพื่อให้คุณกำลังจะเริ่ม เห็นมันทางลาดขึ้นทางด้านซ้าย 1025 00:47:16,422 --> 00:47:19,130 และในแต่ละซ้ำเป็นฉัน เสนอก็ไม่ได้ทำงานน้อยลงเพียงเล็กน้อย 1026 00:47:19,130 --> 00:47:21,921 มันไม่จำเป็นต้องไปตลอดทาง กลับไปทางซ้ายสุดของรายการ 1027 00:47:21,921 --> 00:47:23,900 เพราะมันอยู่แล้ว รู้เหล่านั้นจะถูกจัดเรียง 1028 00:47:23,900 --> 00:47:28,129 ดังนั้นชนิดของมันให้ความรู้สึกเหมือนมัน เร่งแม้ว่าแต่ละขั้นตอนคือ 1029 00:47:28,129 --> 00:47:29,420 การจำนวนเดียวกันของเวลา 1030 00:47:29,420 --> 00:47:31,600 มีเพียงขั้นตอนที่เหลือน้อยลง 1031 00:47:31,600 --> 00:47:35,240 และตอนนี้คุณสามารถชนิดของความรู้สึก ขั้นตอนวิธีการทำความสะอาดจุดสิ้นสุดของมัน 1032 00:47:35,240 --> 00:47:37,040 และแน่นอนตอนนี้ก็เรียง 1033 00:47:37,040 --> 00:47:41,620 >> ดังนั้นการจัดเรียงแทรกจะทำทั้งหมด 1034 00:47:41,620 --> 00:47:43,600 ฉันจำเป็นต้องสุ่มอาร์เรย์ 1035 00:47:43,600 --> 00:47:45,940 และแจ้งให้ทราบที่ฉันสามารถทำได้เพียงแค่ ให้สุ่มมัน 1036 00:47:45,940 --> 00:47:50,630 และเราจะได้รับการประมาณการของ วิธีการเดียวกันเรียงแทรก 1037 00:47:50,630 --> 00:47:55,050 ผมขอชะลอตัวลงไปที่นี่ 1038 00:47:55,050 --> 00:47:56,915 ขอเริ่มต้นที่มากกว่า 1039 00:47:56,915 --> 00:47:57,414 หยุด. 1040 00:47:57,414 --> 00:48:00,662 1041 00:48:00,662 --> 00:48:02,410 >> Let 's ข้ามสี่ 1042 00:48:02,410 --> 00:48:03,200 เราจะไปที่นั่น. 1043 00:48:03,200 --> 00:48:04,190 สุ่มอาร์เรย์พวกเขา 1044 00:48:04,190 --> 00:48:05,555 และที่นี่เรา go-- เรียงแทรก 1045 00:48:05,555 --> 00:48:10,260 1046 00:48:10,260 --> 00:48:12,800 เล่น. 1047 00:48:12,800 --> 00:48:17,280 ขอให้สังเกตว่ามันจัดการกับแต่ละ องค์ประกอบพบทันที 1048 00:48:17,280 --> 00:48:20,282 แต่ถ้ามันอยู่ใน แจ้งให้ทราบสถานที่ที่ผิด 1049 00:48:20,282 --> 00:48:21,740 ทั้งหมดของการทำงานที่มีที่จะเกิดขึ้น 1050 00:48:21,740 --> 00:48:24,700 เราจะต้องเก็บขยับมากขึ้น และองค์ประกอบอื่น ๆ อีกมากมายที่จะทำให้ห้อง 1051 00:48:24,700 --> 00:48:27,340 เพื่อคนที่เราต้องการที่จะใส่ในสถานที่ 1052 00:48:27,340 --> 00:48:30,740 >> ดังนั้นเราจึงมุ่งเน้นไปที่ ปลายด้านซ้ายของรายการเท่านั้น 1053 00:48:30,740 --> 00:48:34,460 แจ้งให้ทราบว่าเราไม่ได้มองแม้ at-- เรา ไม่ได้เน้นในสิ่งที่สีชมพู 1054 00:48:34,460 --> 00:48:35,610 ไปทางขวา. 1055 00:48:35,610 --> 00:48:38,180 เราเพียงแค่การจัดการกับ ปัญหาที่เกิดขึ้นในขณะที่เราไป 1056 00:48:38,180 --> 00:48:40,430 แต่เรากำลังสร้างจำนวนมาก ทำงานเพื่อตัวเราเองยังคง 1057 00:48:40,430 --> 00:48:44,410 ดังนั้นถ้าเราเพิ่มความเร็วในการนี​​้ขึ้น ตอนนี้จะไปเสร็จสิ้น 1058 00:48:44,410 --> 00:48:46,210 มันมีความรู้สึกที่แตกต่างกันไปแน่นอน 1059 00:48:46,210 --> 00:48:50,150 มันเป็นเพียงแค่มุ่งเน้นไปที่ปลายด้านซ้าย แต่ ทำทำงานมากขึ้นน้อยที่สุดเท่าที่ needed-- 1060 00:48:50,150 --> 00:48:53,230 ชนิดของสิ่งที่ราบเรียบ มากกว่าการแก้ไขสิ่ง 1061 00:48:53,230 --> 00:48:58,350 แต่ในท้ายที่สุดการจัดการกับ แต่ละองค์ประกอบหนึ่งที่เวลา 1062 00:48:58,350 --> 00:49:07,740 จนกว่าเราจะได้รับไปยังผู้คนทั่วไปดีเรา ทุกคนรู้วิธีนี้จะจบ 1063 00:49:07,740 --> 00:49:09,700 ดังนั้นจึงเป็น underwhelming เล็ก ๆ น้อย ๆ อาจจะ 1064 00:49:09,700 --> 00:49:12,830 >> แต่รายการใน end-- ที่ spoiler-- เป็นไปได้เรียง 1065 00:49:12,830 --> 00:49:15,300 เพื่อให้ดูที่หนึ่งคนสุดท้าย 1066 00:49:15,300 --> 00:49:16,840 เราก็ไม่สามารถข้ามขั้นตอนนี้ 1067 00:49:16,840 --> 00:49:18,000 เราเกือบจะมี 1068 00:49:18,000 --> 00:49:19,980 สองไปหนึ่งที่จะไป 1069 00:49:19,980 --> 00:49:22,680 และ voila 1070 00:49:22,680 --> 00:49:23,450 ยอดเยี่ยม 1071 00:49:23,450 --> 00:49:27,220 >> ดังนั้นตอนนี้ขอทำหนึ่งคนสุดท้าย อีกครั้งกับการจัดเรียงสุ่มฟอง 1072 00:49:27,220 --> 00:49:31,690 และแจ้งให้ทราบที่นี่โดยเฉพาะอย่างยิ่งถ้าฉันช้า ลงนี้ไม่ให้บินโฉบผ่าน 1073 00:49:31,690 --> 00:49:36,830 แต่สังเกตเห็นมันก็ทำให้คู่ การจัดเรียง comparisons-- ของการแก้ปัญหาในท้องถิ่น 1074 00:49:36,830 --> 00:49:39,050 แต่ทันทีที่เราได้รับ ตอนท้ายของรายการในสีชมพูที่ 1075 00:49:39,050 --> 00:49:40,690 สิ่งที่จะต้องเกิดขึ้นอีกครั้งหรือไม่ 1076 00:49:40,690 --> 00:49:44,539 1077 00:49:44,539 --> 00:49:46,830 ใช่มันจะต้อง เริ่มต้นเพราะเพียง 1078 00:49:46,830 --> 00:49:49,870 ความผิดพลาดจากจำนวนคงที่ 1079 00:49:49,870 --> 00:49:53,120 และอาจจะมีการเปิดเผยยังคนอื่น ๆ 1080 00:49:53,120 --> 00:49:58,950 และดังนั้นหากคุณเพิ่มความเร็วในการนี​​้ขึ้นคุณจะ เห็นว่ามากที่สุดเท่าที่ชื่อมีความหมาย 1081 00:49:58,950 --> 00:50:01,870 ที่มีขนาดเล็ก elements-- หรือมากกว่า elements-- ขนาดใหญ่จะเริ่มต้น 1082 00:50:01,870 --> 00:50:03,740 ฟองขึ้นไปด้านบนถ้าคุณจะ 1083 00:50:03,740 --> 00:50:07,380 และองค์ประกอบที่มีขนาดเล็ก เริ่มต้นที่จะฟองลงไปทางซ้าย 1084 00:50:07,380 --> 00:50:10,780 และแน่นอนว่าเป็นชนิดของ ผลภาพได้เป็นอย่างดี 1085 00:50:10,780 --> 00:50:17,150 และอื่น ๆ นี้จะจบลงด้วยการตกแต่ง ในลักษณะที่คล้ายกันมากเกินไป 1086 00:50:17,150 --> 00:50:19,160 >> เราไม่ได้มีที่จะอาศัยอยู่ ในหนึ่งนี้โดยเฉพาะ 1087 00:50:19,160 --> 00:50:21,010 ผมขอเปิดตอนนี้มากเกินไป 1088 00:50:21,010 --> 00:50:24,040 มีเพียงไม่กี่ขั้นตอนวิธีการเรียงลำดับอื่น ๆ ในโลกที่ไม่กี่ที่ 1089 00:50:24,040 --> 00:50:25,580 ถูกจับที่นี่ 1090 00:50:25,580 --> 00:50:29,960 และโดยเฉพาะอย่างยิ่งสำหรับผู้เรียนที่ไม่ได้เป็น จำเป็นต้องภาพหรือคณิตศาสตร์ 1091 00:50:29,960 --> 00:50:31,930 ในขณะที่เราทำมาก่อนที่เราสามารถทำได้ นอกจากนี้ยังทำเช่นนี้ audially 1092 00:50:31,930 --> 00:50:34,210 ถ้าเราเชื่อมโยงเสียงกับเรื่องนี้ 1093 00:50:34,210 --> 00:50:36,990 และเพียงเพื่อความสนุกสนานที่นี่เป็น ขั้นตอนวิธีการที่แตกต่างกันไม่กี่ 1094 00:50:36,990 --> 00:50:40,950 และหนึ่งในนั้นโดยเฉพาะอย่างยิ่งคุณ จะแจ้งให้ทราบเป็นที่เรียกว่า "merge sort." 1095 00:50:40,950 --> 00:50:43,250 >> มันเป็นจริงเป็นพื้นฐาน ขั้นตอนวิธีการที่ดีกว่า 1096 00:50:43,250 --> 00:50:45,860 เช่นที่ผสานการเรียงลำดับหนึ่ง คนที่คุณกำลังจะเห็น 1097 00:50:45,860 --> 00:50:49,170 ไม่ได้เป็นคำสั่งของ n Squared 1098 00:50:49,170 --> 00:50:57,280 มันอยู่ในคำสั่งของ n ครั้งเข้าสู่ระบบของ n ที่เป็นจริงและทำให้มีขนาดเล็กลง 1099 00:50:57,280 --> 00:50:58,940 ได้เร็วขึ้นกว่าที่อื่น ๆ อีกสาม 1100 00:50:58,940 --> 00:51:00,670 และมีคู่อื่น ๆ คนโง่ที่เราจะเห็น 1101 00:51:00,670 --> 00:51:01,933 >> ดังนั้นที่นี่เราไปกับเสียงบาง 1102 00:51:01,933 --> 00:51:06,620 1103 00:51:06,620 --> 00:51:10,490 นี่คือการจัดเรียงแทรกดังนั้นอีกครั้ง มันเป็นเพียงแค่การจัดการกับองค์ประกอบ 1104 00:51:10,490 --> 00:51:13,420 ที่พวกเขามา 1105 00:51:13,420 --> 00:51:17,180 นี้จะเรียงลำดับฟองดังนั้นจึงเป็นเรื่อง คิดของพวกเขาเป็นคู่ที่เวลา 1106 00:51:17,180 --> 00:51:22,030 1107 00:51:22,030 --> 00:51:24,490 และอีกครั้งในองค์ประกอบที่ใหญ่ที่สุด กำลังเดือดปุด ๆ ขึ้นไปด้านบน 1108 00:51:24,490 --> 00:51:38,098 1109 00:51:38,098 --> 00:51:41,710 >> ถัดไปขึ้นเรียงตัวเลือก 1110 00:51:41,710 --> 00:51:45,420 นี่คือขั้นตอนวิธีการของเบนที่ อีกครั้งที่เขาเลือกซ้ำ 1111 00:51:45,420 --> 00:51:46,843 องค์ประกอบที่เล็กต่อไป 1112 00:51:46,843 --> 00:51:49,801 1113 00:51:49,801 --> 00:51:53,900 และอีกครั้งตอนนี้คุณสามารถจริงๆได้ยินว่า ก็เร่งขึ้น แต่เฉพาะในเพื่อให้ห่างไกล 1114 00:51:53,900 --> 00:51:58,230 ในขณะที่มันทำน้อยลงและน้อย ทำงานในแต่ละซ้ำ 1115 00:51:58,230 --> 00:52:04,170 นี่คือการได้เร็วขึ้นหนึ่งผสานเรียงลำดับ ซึ่งเป็นกลุ่มเรียงลำดับของตัวเลข 1116 00:52:04,170 --> 00:52:05,971 ร่วมกันแล้วรวมพวกเขา 1117 00:52:05,971 --> 00:52:07,720 ดังนั้น look-- ซ้าย ครึ่งหนึ่งจะถูกจัดเรียงไว้แล้ว 1118 00:52:07,720 --> 00:52:14,165 >> ตอนนี้ก็เรียงลำดับครึ่งขวาและ ตอนนี้ก็จะรวมเป็นหนึ่ง 1119 00:52:14,165 --> 00:52:19,160 นี่คือสิ่งที่เรียกว่า "การจัดเรียง Gnome." 1120 00:52:19,160 --> 00:52:23,460 และชนิดที่คุณสามารถเห็นได้ว่า มันจะกลับมา 1121 00:52:23,460 --> 00:52:27,950 แก้ไขการทำงานนิด ๆ หน่อย ๆ ที่นี่ ก่อนที่มันจะมีวิธีการที่จะได้งานใหม่ 1122 00:52:27,950 --> 00:52:32,900 1123 00:52:32,900 --> 00:52:33,692 และที่มัน 1124 00:52:33,692 --> 00:52:36,400 มีการจัดเรียงอื่นซึ่งเป็นเป็น จริงเพียงเพื่อวัตถุประสงค์ทางวิชาการ 1125 00:52:36,400 --> 00:52:40,980 ที่เรียกว่า "การจัดเรียงโง่" ซึ่งจะใช้เวลา ข้อมูลของคุณจะเรียงลำดับมันสุ่ม 1126 00:52:40,980 --> 00:52:43,350 และจากนั้นจะตรวจสอบหากมีการจัดเรียง 1127 00:52:43,350 --> 00:52:47,880 และถ้ามันไม่ได้ก็อีกครั้งมันแปลก ๆ สุ่มตรวจสอบหากมีการเรียงลำดับ 1128 00:52:47,880 --> 00:52:49,440 และถ้าไม่ซ้ำ 1129 00:52:49,440 --> 00:52:52,660 และในทางทฤษฎีความน่าจะเป็น นี้จะเสร็จสมบูรณ์ 1130 00:52:52,660 --> 00:52:54,140 แต่หลังจากที่ค่อนข้างน้อยของเวลา 1131 00:52:54,140 --> 00:52:56,930 มันไม่ได้เป็นส่วนใหญ่ ที่มีประสิทธิภาพของอัลกอริทึม 1132 00:52:56,930 --> 00:53:02,550 ดังนั้นคำถามใด ๆ เกี่ยวกับผู้ที่ โดยเฉพาะอย่างยิ่งขั้นตอนวิธีการหรืออะไร 1133 00:53:02,550 --> 00:53:04,720 ที่เกี่ยวข้องมีมากเกินไป? 1134 00:53:04,720 --> 00:53:09,430 >> ดีตอนนี้ขอแซวนอกเหนือสิ่งที่ทุก เส้นเหล่านี้ที่ฉันได้รับการวาดภาพ 1135 00:53:09,430 --> 00:53:15,090 และสิ่งที่ฉันสมมติคอมพิวเตอร์ สามารถทำได้ภายใต้ฝากระโปรง 1136 00:53:15,090 --> 00:53:18,650 ฉันจะยืนยันว่าทั้งหมดของตัวเลขเหล่านี้ ฉันเก็บ drawing-- ที่พวกเขาต้องการที่จะได้รับ 1137 00:53:18,650 --> 00:53:21,330 เก็บไว้ที่อื่นในหน่วยความจำ 1138 00:53:21,330 --> 00:53:24,130 เราจะได้รับการกำจัดของผู้ชายคนนี้ตอนนี้มากเกินไป 1139 00:53:24,130 --> 00:53:30,110 >> ดังนั้นชิ้นส่วนของหน่วยความจำใน computer-- ดังนั้น RAM DIMM คือ 1140 00:53:30,110 --> 00:53:35,480 สิ่งที่เราค้นหาเมื่อวานนี้คู่ หน่วยความจำแบบอินไลน์ module-- ลักษณะเช่นนี้ 1141 00:53:35,480 --> 00:53:39,370 และแต่ละชิปสีดำเล็ก ๆ น้อย ๆ เหล่านี้ เป็นจำนวนไบต์บางโดยทั่วไป 1142 00:53:39,370 --> 00:53:44,380 แล้วพินทองเช่น สายไฟที่เชื่อมต่อกับคอมพิวเตอร์ 1143 00:53:44,380 --> 00:53:47,521 และคณะกรรมการซิลิกอนสีเขียวเป็นเพียง สิ่งที่ช่วยให้ทุกอย่างทั้งหมดเข้าด้วยกัน 1144 00:53:47,521 --> 00:53:48,770 ดังนั้นสิ่งนี้จริงๆหมายถึงอะไร 1145 00:53:48,770 --> 00:53:53,180 ถ้าผมชนิดของการวาดภาพเดียวกันนี้ สมมติสำหรับความเรียบง่าย 1146 00:53:53,180 --> 00:53:55,280 ที่ DIMM นี้คู่ โมดูลหน่วยความจำแบบอินไลน์ 1147 00:53:55,280 --> 00:54:00,530 เป็นหนึ่งกิกะไบต์ของ RAM, หนึ่งกิกะไบต์ของ หน่วยความจำซึ่งเป็นวิธีการที่หลายไบต์รวม? 1148 00:54:00,530 --> 00:54:02,100 หนึ่งกิกะไบต์เป็นไบต์หลายวิธี? 1149 00:54:02,100 --> 00:54:04,860 1150 00:54:04,860 --> 00:54:06,030 ยิ่งไปกว่านั้น. 1151 00:54:06,030 --> 00:54:09,960 1,124 กิโลกรัมเป็น 1,000 1152 00:54:09,960 --> 00:54:11,730 เมกะล้าน 1153 00:54:11,730 --> 00:54:14,570 Giga เป็นพันล้าน 1154 00:54:14,570 --> 00:54:15,070 >> ฉันกำลังโกหก? 1155 00:54:15,070 --> 00:54:16,670 เราสามารถแม้แต่จะอ่านฉลาก? 1156 00:54:16,670 --> 00:54:19,920 นี้เป็นจริง 128 กิกะไบต์ดังนั้นมันมากขึ้น 1157 00:54:19,920 --> 00:54:22,130 แต่เราจะหลอกนี้ เป็นเพียงหนึ่งกิกะไบต์ 1158 00:54:22,130 --> 00:54:25,640 เพื่อที่ว่าหมายความว่ามีเป็นพันล้าน ไบต์ของหน่วยความจำที่มีให้ฉัน 1159 00:54:25,640 --> 00:54:29,770 หรือ 8 พันล้านบิต แต่เรากำลังจะ ที่จะพูดคุยในแง่ของไบต์ในขณะนี้ 1160 00:54:29,770 --> 00:54:30,750 ก้าวไปข้างหน้า 1161 00:54:30,750 --> 00:54:36,330 >> ดังนั้นสิ่งที่หมายถึงคือนี้อยู่ หนึ่งไบต์นี้เป็นไบต์อื่น 1162 00:54:36,330 --> 00:54:38,680 นี้เป็นไบต์อื่น และถ้าเราต้องการจริงๆ 1163 00:54:38,680 --> 00:54:43,280 จะเฉพาะเจาะจงเราจะต้อง วาดพันล้านสี่เหลี่ยมเล็ก ๆ 1164 00:54:43,280 --> 00:54:44,320 แต่สิ่งที่หมายความว่า? 1165 00:54:44,320 --> 00:54:46,420 ดีให้ฉันเพียงซูม ในภาพนี้ 1166 00:54:46,420 --> 00:54:50,900 ถ้าฉันมีบางสิ่งบางอย่างที่มีลักษณะ เช่นนี้ตอนนี้ที่สี่ไบต์ 1167 00:54:50,900 --> 00:54:53,710 >> และดังนั้นผมจึงสามารถใส่ตัวเลขสี่ตัวที่นี่ 1168 00:54:53,710 --> 00:54:54,990 หนึ่งสองสามสี่. 1169 00:54:54,990 --> 00:55:00,170 หรือฉันสามารถใส่สี่ตัวอักษรหรือสัญลักษณ์ 1170 00:55:00,170 --> 00:55:02,620 "เฮ้!" สามารถไปที่นั่น เพราะแต่ละตัวอักษร 1171 00:55:02,620 --> 00:55:04,370 เราพูดถึงก่อนหน้านี้ อาจจะแสดง 1172 00:55:04,370 --> 00:55:06,650 กับแปดบิตหรือ ASCII หรือไบต์ 1173 00:55:06,650 --> 00:55:09,370 ดังนั้นในคำอื่น ๆ ที่คุณสามารถทำได้ ใส่ 8 พันล้านสิ่งที่อยู่ภายใน 1174 00:55:09,370 --> 00:55:11,137 นี้อย่างใดอย่างหนึ่งติดของหน่วยความจำ 1175 00:55:11,137 --> 00:55:14,345 ตอนนี้มันหมายความว่าอะไรที่จะนำสิ่งที่กลับมา เพื่อกลับไปกลับในหน่วยความจำเช่นนี้หรือไม่ 1176 00:55:14,345 --> 00:55:17,330 นี่คือสิ่งที่เป็นโปรแกรมเมอร์ จะเรียกว่า "อาเรย์." 1177 00:55:17,330 --> 00:55:21,250 ในโปรแกรมคอมพิวเตอร์ที่คุณไม่คิดว่า เกี่ยวกับฮาร์ดแวร์พื้นฐานต่อ se 1178 00:55:21,250 --> 00:55:24,427 คุณเพียงแค่คิดว่าตัวเองมี การเข้าถึงทั้งหมดพันล้านไบต์ 1179 00:55:24,427 --> 00:55:26,010 และคุณสามารถสิ่งที่คุณต้องการด้วย 1180 00:55:26,010 --> 00:55:27,880 แต่เพื่อความสะดวก มันมีประโยชน์โดยทั่วไป 1181 00:55:27,880 --> 00:55:31,202 เพื่อให้สิทธิความจำของคุณ ถัดจากแต่ละอื่น ๆ เช่นนี้ 1182 00:55:31,202 --> 00:55:33,660 ดังนั้นถ้าฉันซูมใน this-- เพราะเราไม่ได้ไปแน่นอน 1183 00:55:33,660 --> 00:55:39,310 การวาดพันล้าน squares-- เล็ก ๆ น้อย ๆ สมมติว่าบอร์ดนี้แสดงให้เห็นถึง 1184 00:55:39,310 --> 00:55:40,610 ติดของหน่วยความจำที่ตอนนี้ 1185 00:55:40,610 --> 00:55:43,800 และฉันก็จะวาดมากที่สุดเท่าที่ฉัน เครื่องหมายจบลงให้ผมมาที่นี่ 1186 00:55:43,800 --> 00:55:46,420 1187 00:55:46,420 --> 00:55:52,300 ดังนั้นตอนนี้เรามีการติด ของหน่วยความจำบนกระดาน 1188 00:55:52,300 --> 00:55:56,400 ที่มีหนึ่งสองสามสี่ห้า หกหนึ่งสองสามสี่ห้าหก 1189 00:55:56,400 --> 00:56:01,130 ดังนั้น seven-- 42 ไบต์ หน่วยความจำบนหน้าจอทั้งหมด 1190 00:56:01,130 --> 00:56:01,630 ขอขอบคุณ. 1191 00:56:01,630 --> 00:56:02,838 ใช่ทำถูกเลขคณิตของฉัน 1192 00:56:02,838 --> 00:56:05,120 ดังนั้น 42 ไบต์ของหน่วยความจำที่นี่ 1193 00:56:05,120 --> 00:56:06,660 ดังนั้นสิ่งนี้จริงหมายถึงอะไร 1194 00:56:06,660 --> 00:56:09,830 ดีโปรแกรมคอมพิวเตอร์ จริงจะโดยทั่วไป 1195 00:56:09,830 --> 00:56:12,450 คิดว่าหน่วยความจำนี้เป็นแอดเดรส 1196 00:56:12,450 --> 00:56:16,630 ในคำอื่น ๆ ทุกคนของเหล่านี้ สถานที่ในหน่วยความจำในฮาร์ดแวร์ 1197 00:56:16,630 --> 00:56:18,030 มีที่อยู่ที่ไม่ซ้ำกัน 1198 00:56:18,030 --> 00:56:22,020 >> มันไม่ได้ซับซ้อนเท่าหนึ่งเสียงอึกทึก สแควร์, Cambridge, Mass. 02138 1199 00:56:22,020 --> 00:56:23,830 แต่มันเป็นเพียงตัวเลข 1200 00:56:23,830 --> 00:56:27,930 นี่คือจำนวนไบต์ศูนย์นี้เป็น หนึ่งในนี้เป็นสองนี้เป็นสาม 1201 00:56:27,930 --> 00:56:30,327 และนี่คือ 41 1202 00:56:30,327 --> 00:56:30,910 เดี๋ยวก่อน. 1203 00:56:30,910 --> 00:56:32,510 ฉันคิดว่าฉันกล่าวว่า 42 ช่วงเวลาที่ผ่านมา 1204 00:56:32,510 --> 00:56:35,050 1205 00:56:35,050 --> 00:56:37,772 ผมเริ่มนับที่ศูนย์ เพื่อให้เป็นจริงที่ถูกต้อง 1206 00:56:37,772 --> 00:56:40,980 ตอนนี้เราไม่ได้มีการวาดที่จริงมัน เป็นตารางและถ้าคุณวาดเป็นตาราง 1207 00:56:40,980 --> 00:56:43,520 ผมคิดว่าสิ่งที่จริง ได้รับบิตทำให้เข้าใจผิด 1208 00:56:43,520 --> 00:56:46,650 สิ่งที่จะเป็นโปรแกรมเมอร์, ในใจของเขาหรือเธอเอง 1209 00:56:46,650 --> 00:56:50,310 โดยทั่วไปคิดว่านี้ หน่วยความจำที่เป็นอยู่เช่นเดียวกับเทป 1210 00:56:50,310 --> 00:56:53,340 เช่นชิ้นส่วนของเทปกำบัง ที่เพิ่งไปบนและบนตลอดไป 1211 00:56:53,340 --> 00:56:54,980 หรือจนกว่าคุณจะวิ่งออกมาจากหน่วยความจำ 1212 00:56:54,980 --> 00:56:59,200 ดังนั้นวิธีที่ใช้กันมากขึ้นในการวาด และเพียงแค่คิดเกี่ยวกับหน่วยความจำ 1213 00:56:59,200 --> 00:57:03,710 จะว่านี่คือไบต์ศูนย์หนึ่ง สอง, สาม, และจากนั้นจุดจุดจุด 1214 00:57:03,710 --> 00:57:07,650 และคุณมี 42 ไบต์ดังกล่าวรวมแม้กระทั่ง แม้ว่าร่างกายมันอาจจริง 1215 00:57:07,650 --> 00:57:09,480 เป็นสิ่งที่มากขึ้นเช่นนี้ 1216 00:57:09,480 --> 00:57:12,850 >> ดังนั้นถ้าตอนนี้คุณคิดว่าคุณ หน่วยความจำเช่นนี้เช่นเดียวกับเทป 1217 00:57:12,850 --> 00:57:17,640 นี้คือสิ่งที่เป็นโปรแกรมเมอร์อีกครั้ง จะเรียกอาร์เรย์ของหน่วยความจำ 1218 00:57:17,640 --> 00:57:20,660 และเมื่อคุณต้องการในการจัดเก็บจริง บางสิ่งบางอย่างในหน่วยความจำของคอมพิวเตอร์ 1219 00:57:20,660 --> 00:57:23,290 คุณมักจะทำสิ่งที่ร้านค้า กลับไปกลับไปกลับไปกลับ 1220 00:57:23,290 --> 00:57:25,010 ดังนั้นเราจึงได้รับการพูดคุยเกี่ยวกับตัวเลข 1221 00:57:25,010 --> 00:57:30,880 และเมื่อฉันต้องการที่จะแก้ปัญหา เช่นสี่หนึ่งสามสอง 1222 00:57:30,880 --> 00:57:33,820 แม้ว่าฉันเป็นเพียงแค่การวาดภาพ เพียงตัวเลขสี่หนึ่งสาม 1223 00:57:33,820 --> 00:57:39,490 สองบนกระดานคอมพิวเตอร์จะ จริงๆมีการตั้งค่านี้ในหน่วยความจำ 1224 00:57:39,490 --> 00:57:43,347 >> และสิ่งที่จะติดกับ สองในหน่วยความจำของคอมพิวเตอร์? 1225 00:57:43,347 --> 00:57:44,680 ดีมีคำตอบว่าไม่มี 1226 00:57:44,680 --> 00:57:45,770 เราไม่ทราบจริงๆ 1227 00:57:45,770 --> 00:57:48,200 และตราบเท่าที่ คอมพิวเตอร์ไม่จำเป็นต้องใช้มัน 1228 00:57:48,200 --> 00:57:51,440 มันไม่ได้มีการดูแลสิ่งที่เป็นไป ไปยังหมายเลขที่มันไม่เกี่ยวกับการดูแล 1229 00:57:51,440 --> 00:57:55,130 และเมื่อฉันกล่าวว่าก่อนหน้านี้ว่าคอมพิวเตอร์ เท่านั้นที่สามารถดูที่อยู่ในช่วงเวลาหนึ่ง, 1230 00:57:55,130 --> 00:57:56,170 นี้เป็นชนิดที่ว่าทำไม 1231 00:57:56,170 --> 00:57:59,490 >> ไม่แตกต่างจากการบันทึก ผู้เล่นและหัวอ่าน 1232 00:57:59,490 --> 00:58:03,030 เพียง แต่ความสามารถในการมองไปที่บาง ร่องในบันทึกเก่าโรงเรียนทางกายภาพ 1233 00:58:03,030 --> 00:58:06,500 ในเวลาที่ใกล้เคียงกัน สามารถขอบคุณคอมพิวเตอร์ 1234 00:58:06,500 --> 00:58:09,810 เพื่อ CPU และของมัน Intel ชุดคำสั่ง 1235 00:58:09,810 --> 00:58:12,480 ในหมู่ผู้ที่มีการเรียนการสอน ถูกอ่านจากหน่วยความจำ 1236 00:58:12,480 --> 00:58:15,590 หรือบันทึก memory-- คอมพิวเตอร์เท่านั้นสามารถดู 1237 00:58:15,590 --> 00:58:19,210 ที่สถานที่หนึ่งที่ time-- บางครั้งการรวมกันของพวกเขา 1238 00:58:19,210 --> 00:58:21,770 แต่จริงๆเพียงแค่สถานที่หนึ่งที่เวลา 1239 00:58:21,770 --> 00:58:24,770 ดังนั้นเมื่อเรากำลังทำ เหล่านี้ขั้นตอนวิธีการต่างๆ 1240 00:58:24,770 --> 00:58:28,110 ฉันไม่ได้เพียงแค่เขียนใน vacuum-- สี่หนึ่งสามสอง 1241 00:58:28,110 --> 00:58:30,849 ตัวเลขเหล่านี้เป็นของจริง ที่ไหนสักแห่งในหน่วยความจำทางกายภาพ 1242 00:58:30,849 --> 00:58:32,890 ดังนั้นจึงมีเล็ก ๆ น้อย ทรานซิสเตอร์หรือบางชนิด 1243 00:58:32,890 --> 00:58:35,840 ของอุปกรณ์อิเล็กทรอนิกส์ภายใต้ เครื่องดูดควันเก็บค่าเหล่านี้ 1244 00:58:35,840 --> 00:58:40,460 >> และรวมบิตกี่ ที่เกี่ยวข้องกับการอยู่ในขณะนี้เพียงเพื่อจะชัดเจน? 1245 00:58:40,460 --> 00:58:45,580 ดังนั้นนี่คือสี่ไบต์หรือ ตอนนี้ก็ 32 บิตรวม 1246 00:58:45,580 --> 00:58:49,280 ดังนั้นมีจริง 32 ศูนย์และ คนเขียนสี่สิ่งเหล่านี้ 1247 00:58:49,280 --> 00:58:52,070 มีมากยิ่งขึ้นกว่าที่นี่ แต่ อีกครั้งที่เราไม่สนใจเกี่ยวกับว่า 1248 00:58:52,070 --> 00:58:55,120 >> ดังนั้นตอนนี้ขอถามอีก คำถามโดยใช้หน่วยความจำ 1249 00:58:55,120 --> 00:58:57,519 เนื่องจากว่าในตอนท้าย ในวันนี้คือในความแปรปรวน 1250 00:58:57,519 --> 00:59:00,310 ไม่ว่าสิ่งที่เราอาจจะทำอย่างไรกับ คอมพิวเตอร์ในตอนท้ายของวัน 1251 00:59:00,310 --> 00:59:02,560 ฮาร์ดแวร์ยังคงเป็น เดียวกันภายใต้ฝากระโปรง 1252 00:59:02,560 --> 00:59:04,670 ฉันจะเก็บคำในที่นี่? 1253 00:59:04,670 --> 00:59:09,710 ดีคำในเครื่องคอมพิวเตอร์เช่น "เฮ้!" จะถูกเก็บไว้เพียงเช่นนี้ 1254 00:59:09,710 --> 00:59:12,300 และถ้าคุณต้องการอีกต่อไป คำที่คุณสามารถเพียง 1255 00:59:12,300 --> 00:59:19,120 เขียนทับที่และพูดอะไรบางอย่าง เช่น "สวัสดี" และร้านค้าที่นี่ 1256 00:59:19,120 --> 00:59:23,930 >> และเพื่อให้ที่นี่เกินไป contiguousness นี้ เป็นจริงได้เปรียบ 1257 00:59:23,930 --> 00:59:26,530 เพราะคอมพิวเตอร์สามารถเพียง อ่านจากขวาไปซ้าย 1258 00:59:26,530 --> 00:59:28,680 แต่นี่คือคำถาม 1259 00:59:28,680 --> 00:59:33,480 ในบริบทของคำนี้ H-E-L-L-o, เครื่องหมายอัศเจรีย์ 1260 00:59:33,480 --> 00:59:38,740 วิธีการใช้คอมพิวเตอร์อาจจะทราบว่า คำที่เริ่มต้นและคำลงท้าย? 1261 00:59:38,740 --> 00:59:41,690 1262 00:59:41,690 --> 00:59:43,800 ในบริบทของตัวเลข วิธีการที่ไม่คอมพิวเตอร์ 1263 00:59:43,800 --> 00:59:48,396 รู้นานลำดับของวิธีการ หมายเลขหรือที่มันเริ่มต้น? 1264 00:59:48,396 --> 00:59:50,270 ดีก็จะเปิด out-- และเราจะไม่ไปมากเกินไป 1265 00:59:50,270 --> 00:59:54,970 ลงไปในระดับของ detail-- นี้ คอมพิวเตอร์ย้ายสิ่งรอบ ๆ ในหน่วยความจำ 1266 00:59:54,970 --> 00:59:57,800 แท้จริงโดยวิธีการที่อยู่เหล่านี้ 1267 00:59:57,800 --> 01:00:02,080 ดังนั้นในคอมพิวเตอร์ถ้าคุณ การเขียนโค้ดในการจัดเก็บสิ่งที่ 1268 01:00:02,080 --> 01:00:05,800 เหมือนคำพูดสิ่งที่คุณกำลัง ทำจริงๆคือการพิมพ์ 1269 01:00:05,800 --> 01:00:11,320 สำนวนที่ว่าจำที่อยู่ใน หน่วยความจำคอมพิวเตอร์ของคำเหล่านี้เป็น 1270 01:00:11,320 --> 01:00:14,370 เพื่อให้ฉันทำมาก ตัวอย่างง่ายๆ 1271 01:00:14,370 --> 01:00:18,260 >> ฉันจะไปข้างหน้าและ เปิดโปรแกรมข้อความที่เรียบง่าย 1272 01:00:18,260 --> 01:00:20,330 และฉันจะสร้าง ไฟล์ที่เรียกว่า hello.c 1273 01:00:20,330 --> 01:00:22,849 ข้อมูลส่วนใหญ่ที่เรา จะไม่ไปลงในรายละเอียดมาก 1274 01:00:22,849 --> 01:00:25,140 แต่ฉันจะเขียน โปรแกรมในภาษาเดียวกันนั้น 1275 01:00:25,140 --> 01:00:31,140 C. นี้อยู่ไกลข่มขู่มากขึ้น ฉันจะยืนยันกว่าเกา 1276 01:00:31,140 --> 01:00:32,490 แต่มันก็คล้ายกันมากในจิตวิญญาณ 1277 01:00:32,490 --> 01:00:34,364 ในความเป็นจริงเหล่านี้หยิก ชนิด braces-- คุณสามารถของ 1278 01:00:34,364 --> 01:00:37,820 คิดว่าสิ่งที่ผมก็ไม่ได้เช่นนี้ 1279 01:00:37,820 --> 01:00:39,240 >> ลองทำเช่นนี้จริง 1280 01:00:39,240 --> 01:00:45,100 เมื่อธงสีเขียวคลิก ทำต่อไปนี้ 1281 01:00:45,100 --> 01:00:50,210 ฉันต้องการที่จะพิมพ์ออกมา "สวัสดีครับ." 1282 01:00:50,210 --> 01:00:51,500 ดังนั้นนี่คือตอนนี้ pseudocode 1283 01:00:51,500 --> 01:00:53,000 ผมชนิดทำให้ฟางเส้น 1284 01:00:53,000 --> 01:00:56,750 ใน C, ภาษานี้ผมกำลังพูดถึง เกี่ยวกับการพิมพ์บรรทัดนี้สวัสดี 1285 01:00:56,750 --> 01:01:01,940 จริงกลายเป็น "printf" กับ วงเล็บและลำไส้ใหญ่กึ่ง 1286 01:01:01,940 --> 01:01:03,480 >> แต่มันเป็นความคิดเดียวกันแน่นอน 1287 01:01:03,480 --> 01:01:06,730 และนี้ใช้ง่ายมาก "เมื่อธงสีเขียวคลิก" กลายเป็น 1288 01:01:06,730 --> 01:01:10,182 มากความลับมากขึ้น "เป็นโมฆะหลัก Int." 1289 01:01:10,182 --> 01:01:12,890 และนี้จริงๆมีการทำแผนที่ไม่มี ดังนั้นฉันแค่ไปที่จะไม่สนใจว่า 1290 01:01:12,890 --> 01:01:17,210 แต่วงเล็บปีกกาเหมือน ชิ้นส่วนปริศนาโค้งเช่นนี้ 1291 01:01:17,210 --> 01:01:18,700 >> เพื่อให้คุณสามารถชนิดของการคาดเดา 1292 01:01:18,700 --> 01:01:22,357 แม้ว่าคุณจะไม่เคยตั้งโปรแกรมก่อน สิ่งที่ไม่โปรแกรมนี้อาจจะทำอย่างไร 1293 01:01:22,357 --> 01:01:25,560 1294 01:01:25,560 --> 01:01:28,000 อาจจะพิมพ์สวัสดี ที่มีเครื่องหมายอัศเจรีย์ 1295 01:01:28,000 --> 01:01:29,150 >> ดังนั้นลองว่า 1296 01:01:29,150 --> 01:01:30,800 ฉันจะเก็บมันไว้ 1297 01:01:30,800 --> 01:01:34,000 และนี่คืออีกมาก สภาพแวดล้อมของโรงเรียนเก่า 1298 01:01:34,000 --> 01:01:35,420 ฉันไม่สามารถคลิกฉันไม่สามารถลาก 1299 01:01:35,420 --> 01:01:36,910 ฉันต้องพิมพ์คำสั่ง 1300 01:01:36,910 --> 01:01:41,320 ดังนั้นผมจึงต้องการที่จะเรียกใช้โปรแกรมของฉันดังนั้น ฉันอาจจะทำเช่นนี้เหมือน hello.c 1301 01:01:41,320 --> 01:01:42,292 นั่นเป็นไฟล์ฉันวิ่ง 1302 01:01:42,292 --> 01:01:43,500 แต่รอฉันหายไปขั้นตอน 1303 01:01:43,500 --> 01:01:46,470 สิ่งที่พวกเราพูดเป็นสิ่งที่จำเป็น ขั้นตอนในการใช้ภาษาเช่น C หรือไม่? 1304 01:01:46,470 --> 01:01:49,470 ผมเคยเขียนเพียงแหล่งที่มา รหัส แต่สิ่งที่ฉันต้อง? 1305 01:01:49,470 --> 01:01:50,670 ใช่ฉันต้องคอมไพเลอร์ 1306 01:01:50,670 --> 01:01:57,670 ดังนั้นบน Mac ของฉันที่นี่ฉันมี โปรแกรมที่เรียกว่า GCC, GNU C คอมไพเลอร์ 1307 01:01:57,670 --> 01:02:03,990 ซึ่งจะช่วยให้ฉันไปทำเปิด this-- รหัสที่มาของฉันเป็นเราจะเรียกมันว่า 1308 01:02:03,990 --> 01:02:04,930 รหัสเครื่อง 1309 01:02:04,930 --> 01:02:10,180 >> และฉันจะเห็นว่า อีกครั้งดังต่อไปนี้ 1310 01:02:10,180 --> 01:02:14,090 เป็นศูนย์และคนฉันเพียงแค่ สร้างขึ้นจากรหัสที่มาของฉัน 1311 01:02:14,090 --> 01:02:15,730 ทั้งหมดของศูนย์และคน 1312 01:02:15,730 --> 01:02:17,770 และถ้าผมต้องการที่จะทำงาน ฉัน program-- มันเกิดขึ้น 1313 01:02:17,770 --> 01:02:23,010 จะเรียกว่า a.out สำหรับ reasons-- ประวัติศาสตร์ "สวัสดีครับ." 1314 01:02:23,010 --> 01:02:24,070 ฉันสามารถเรียกใช้อีกครั้ง 1315 01:02:24,070 --> 01:02:25,690 สวัสดีสวัสดีสวัสดี. 1316 01:02:25,690 --> 01:02:27,430 และมันดูเหมือนว่าจะทำงาน 1317 01:02:27,430 --> 01:02:31,000 >> แต่นั่นหมายความว่าในบางส่วนของฉัน หน่วยความจำของคอมพิวเตอร์เป็นคำ 1318 01:02:31,000 --> 01:02:35,279 H-E-L-L-o, เครื่องหมายอัศเจรีย์ 1319 01:02:35,279 --> 01:02:38,070 และปรากฎเพียงเช่นกัน สิ่งที่คอมพิวเตอร์จะมักจะ 1320 01:02:38,070 --> 01:02:40,550 ทำเพื่อที่จะรู้ว่า สิ่งที่เริ่มต้นและ end-- มัน 1321 01:02:40,550 --> 01:02:42,460 จะใส่สัญลักษณ์พิเศษที่นี่ 1322 01:02:42,460 --> 01:02:46,064 และการประชุมคือการวาง จำนวนศูนย์ในตอนท้ายของคำ 1323 01:02:46,064 --> 01:02:48,230 เพื่อให้คุณทราบว่ามัน จริงจบลงเพื่อให้คุณ 1324 01:02:48,230 --> 01:02:52,750 ไม่ให้พิมพ์ออกมากขึ้น ตัวละครมากกว่าที่คุณตั้งใจจริง 1325 01:02:52,750 --> 01:02:55,400 >> แต่ Takeaway ที่นี่แม้ แม้ว่าจะเป็นธรรมลับ 1326 01:02:55,400 --> 01:02:58,140 คือว่ามันในท้ายที่สุด ค่อนข้างง่าย 1327 01:02:58,140 --> 01:03:04,550 คุณจะได้รับการจัดเรียงของเทปเปล่า พื้นที่ที่คุณสามารถเขียนตัวอักษร 1328 01:03:04,550 --> 01:03:07,150 คุณก็ต้องมี สัญลักษณ์พิเศษเช่นพล 1329 01:03:07,150 --> 01:03:10,316 จำนวนศูนย์ที่จะใส่ในตอนท้ายของ คำพูดของคุณเพื่อให้คอมพิวเตอร์รู้ 1330 01:03:10,316 --> 01:03:13,410 โอ้ฉันควรจะหยุดพิมพ์หลังจากที่ ฉันเห็นเครื่องหมายอัศเจรีย์ 1331 01:03:13,410 --> 01:03:16,090 เพราะสิ่งต่อไปที่มี เป็นค่า ASCII ของศูนย์ 1332 01:03:16,090 --> 01:03:19,125 หรืออักขระ null เป็น ใครบางคนจะเรียกมันว่า 1333 01:03:19,125 --> 01:03:21,500 แต่มีชนิดของปัญหา ที่นี่และขอให้กลับไป 1334 01:03:21,500 --> 01:03:23,320 ไปยังหมายเลขสักครู่ 1335 01:03:23,320 --> 01:03:28,720 สมมติว่าผมทำในความเป็นจริง มีอาร์เรย์ของตัวเลขที่ 1336 01:03:28,720 --> 01:03:30,730 และคิดว่า โปรแกรมที่ผมเขียนคือ 1337 01:03:30,730 --> 01:03:34,680 เหมือนหนังสือชั้นประถมศึกษาสำหรับครู และครูผู้สอนในชั้นเรียน 1338 01:03:34,680 --> 01:03:38,720 และโปรแกรมนี้จะช่วยให้เขาหรือเธอ พิมพ์ในคะแนนของนักเรียน 1339 01:03:38,720 --> 01:03:39,960 ในแบบทดสอบ 1340 01:03:39,960 --> 01:03:43,750 และสมมติว่านักเรียนที่ได้รับ 100 แบบทดสอบแรกของพวกเขาอาจจะ 1341 01:03:43,750 --> 01:03:49,920 เหมือน 80 บนหน้าหนึ่งแล้ว 75 แล้ว 90 ในการตอบคำถามที่สี่ 1342 01:03:49,920 --> 01:03:54,150 >> เพื่อที่จุดนี้ในเรื่อง อาร์เรย์มีขนาดสี่ 1343 01:03:54,150 --> 01:03:58,470 มีหน่วยความจำมากขึ้นอย่างที่อยู่ใน คอมพิวเตอร์ แต่อาร์เรย์เพื่อที่จะพูด 1344 01:03:58,470 --> 01:04:00,350 มีขนาดสี่ 1345 01:04:00,350 --> 01:04:06,060 สมมติว่าขณะที่ครูต้องการ การกำหนดแบบทดสอบที่ห้าในชั้นเรียน 1346 01:04:06,060 --> 01:04:08,510 ดีหนึ่งในสิ่งที่เขา หรือเธอจะต้องทำ 1347 01:04:08,510 --> 01:04:10,650 ขณะนี้การจัดเก็บค่าเพิ่มเติมที่นี่ 1348 01:04:10,650 --> 01:04:15,490 แต่ถ้าอาร์เรย์ครูมี สร้างขึ้นในโปรแกรมนี้เป็นโปรแกรมที่มีขนาดสำหรับ 1349 01:04:15,490 --> 01:04:22,440 หนึ่งในปัญหาที่เกิดขึ้นกับอาร์เรย์คือว่า คุณก็ไม่สามารถเก็บเพิ่มหน่วยความจำ 1350 01:04:22,440 --> 01:04:26,470 เพราะสิ่งที่ถ้าเป็นส่วนหนึ่งของอีก โปรแกรมมีคำว่า "เดี๋ยวก่อน" ที่นั่น? 1351 01:04:26,470 --> 01:04:29,650 >> ในคำอื่น ๆ หน่วยความจำของฉันสามารถ ใช้สำหรับสิ่งในโปรแกรม 1352 01:04:29,650 --> 01:04:33,250 และถ้าล่วงหน้าฉันพิมพ์ในเดี๋ยวก่อน ฉันต้องการที่จะป้อนข้อมูลสี่คะแนนแบบทดสอบ 1353 01:04:33,250 --> 01:04:34,784 พวกเขาอาจจะไปที่นี่และที่นี่ 1354 01:04:34,784 --> 01:04:37,700 และถ้าคุณก็เปลี่ยนความคิดของคุณ ต่อมาและพูดว่าฉันต้องการตอบคำถามที่ห้า 1355 01:04:37,700 --> 01:04:40,872 คะแนนคุณไม่สามารถเพียงแค่ ใส่มันทุกที่ที่คุณต้องการ 1356 01:04:40,872 --> 01:04:42,580 เพราะสิ่งที่ว่านี้ หน่วยความจำจะถูกใช้ 1357 01:04:42,580 --> 01:04:45,990 สำหรับสิ่งที่ else-- โปรแกรมอื่น ๆ หรือคุณสมบัติอื่น ๆ ของโปรแกรม 1358 01:04:45,990 --> 01:04:46,910 ว่าคุณกำลังทำงานอยู่หรือไม่ 1359 01:04:46,910 --> 01:04:50,650 ดังนั้นคุณต้องคิดล่วงหน้า วิธีที่คุณต้องการในการจัดเก็บข้อมูลของคุณ 1360 01:04:50,650 --> 01:04:54,480 เพราะตอนนี้คุณได้ทาสี ตัวเองเป็นมุมดิจิตอล 1361 01:04:54,480 --> 01:04:57,280 >> ดังนั้นครูอาจแทน บอกว่าเมื่อเขียนโปรแกรม 1362 01:04:57,280 --> 01:04:59,360 ในการจัดเก็บของเขาหรือเธอ เกรดคุณรู้อะไรไหม 1363 01:04:59,360 --> 01:05:04,180 ฉันกำลังจะไปขอ เมื่อเขียนโปรแกรมของฉัน 1364 01:05:04,180 --> 01:05:12,070 ที่ฉันต้องการศูนย์หนึ่งสองสาม สี่ห้าหกแปดเกรดรวม 1365 01:05:12,070 --> 01:05:15,320 ดังนั้นหนึ่งสองสามสี่ ห้าหกเจ็ดแปด 1366 01:05:15,320 --> 01:05:18,612 ครูสามารถเพียงจัดสรร หน่วยความจำเมื่อเขียนโปรแกรมของเขาหรือเธอ 1367 01:05:18,612 --> 01:05:19,570 และบอกว่าคุณรู้อะไรไหม 1368 01:05:19,570 --> 01:05:22,236 ฉันไม่เคยจะกำหนดเพิ่มเติม กว่าแปดแบบทดสอบในภาคการศึกษา 1369 01:05:22,236 --> 01:05:23,130 ที่บ้าเพียง 1370 01:05:23,130 --> 01:05:24,470 ฉันไม่เคยจะจัดสรร 1371 01:05:24,470 --> 01:05:28,270 เพื่อให้วิธีนี้เขาหรือเธอมี ความยืดหยุ่นในการเก็บคะแนนของนักเรียน, 1372 01:05:28,270 --> 01:05:33,010 เช่น 75, 90, และอาจจะเป็นหนึ่งที่พิเศษ นักเรียนได้รับเครดิตพิเศษ 105 1373 01:05:33,010 --> 01:05:36,130 >> แต่ถ้าครูไม่เคย ใช้ทั้งสามช่องว่าง 1374 01:05:36,130 --> 01:05:38,860 มีการใช้งานง่าย Takeaway ที่นี่ 1375 01:05:38,860 --> 01:05:41,410 เขาหรือเธอเป็นเพียงแค่การสูญเสียพื้นที่ 1376 01:05:41,410 --> 01:05:44,790 ดังนั้นในคำอื่น ๆ ที่มีนี้ ถ่วงดุลอำนาจทั่วไปในการเขียนโปรแกรม 1377 01:05:44,790 --> 01:05:48,241 ที่คุณสามารถจัดสรร หน่วยความจำว่ามากที่สุดเท่าที่คุณต้องการ 1378 01:05:48,241 --> 01:05:51,490 คว่ำซึ่งก็คือค​​ุณสุด efficient-- คุณไม่ได้เป็นที่สิ้นเปลือง 1379 01:05:51,490 --> 01:05:54,640 ที่ all-- แต่ข้อเสียของการที่ เป็นสิ่งที่ถ้าคุณเปลี่ยนความคิดของคุณเมื่อ 1380 01:05:54,640 --> 01:05:58,780 การใช้โปรแกรมที่คุณต้องการในการจัดเก็บ ข้อมูลได้มากขึ้นกว่าที่คุณตั้งใจเดิม 1381 01:05:58,780 --> 01:06:03,030 >> ดังนั้นบางทีการแก้ปัญหาคือแล้ว เขียนโปรแกรมของคุณในลักษณะ 1382 01:06:03,030 --> 01:06:05,605 ที่พวกเขาใช้หน่วยความจำเพิ่มเติม กว่าที่พวกเขาต้องการจริง 1383 01:06:05,605 --> 01:06:07,730 วิธีนี้คุณจะไม่ การทำงานเป็นปัญหาว่า 1384 01:06:07,730 --> 01:06:09,730 แต่คุณกำลังถูกสิ้นเปลือง 1385 01:06:09,730 --> 01:06:12,960 และหน่วยความจำมากขึ้นโปรแกรมของคุณใช้ ในขณะที่เราพูดคุยกันเมื่อวานนี้ที่น้อยกว่า 1386 01:06:12,960 --> 01:06:15,410 หน่วยความจำที่มีอยู่ สำหรับโปรแกรมอื่น ๆ 1387 01:06:15,410 --> 01:06:18,790 ไม่ช้าก็เร็วคอมพิวเตอร์ของคุณอาจชะลอตัว ลงเนื่องจากหน่วยความจำเสมือน 1388 01:06:18,790 --> 01:06:22,670 ดังนั้นทางออกที่ดีอาจจะมีอะไร? 1389 01:06:22,670 --> 01:06:24,610 >> ภายใต้การจัดสรรดูเหมือนว่าไม่ดี 1390 01:06:24,610 --> 01:06:27,030 กว่าจัดสรรดูเหมือนว่าไม่ดี 1391 01:06:27,030 --> 01:06:31,120 ดังนั้นสิ่งที่อาจจะเป็นทางออกที่ดีกว่า? 1392 01:06:31,120 --> 01:06:32,390 จัดสรร 1393 01:06:32,390 --> 01:06:33,590 เป็นแบบไดนามิกมากขึ้น 1394 01:06:33,590 --> 01:06:37,520 อย่าบังคับตัวเองให้เลือก เบื้องต้นที่จุดเริ่มต้นสิ่งที่คุณต้องการ 1395 01:06:37,520 --> 01:06:41,370 และแน่นอนไม่เกินจัดสรร เกรงว่าท่านจะสิ้นเปลือง 1396 01:06:41,370 --> 01:06:45,770 >> และเพื่อให้บรรลุเป้าหมายที่เรา ต้องโยนโครงสร้างข้อมูลนี้ 1397 01:06:45,770 --> 01:06:48,100 เพื่อที่จะพูดออกไป 1398 01:06:48,100 --> 01:06:51,080 และเพื่อให้สิ่งที่เป็นโปรแกรมเมอร์ โดยทั่วไปจะใช้ 1399 01:06:51,080 --> 01:06:55,940 สิ่งที่เรียกว่าไม่ได้เป็น อาร์เรย์ แต่รายการที่เชื่อมโยง 1400 01:06:55,940 --> 01:07:00,860 ในคำอื่น ๆ เขาหรือเธอจะ เริ่มคิดของหน่วยความจำของพวกเขา 1401 01:07:00,860 --> 01:07:05,280 เป็นชนิดที่เป็นของรูปร่างที่พวกเขา สามารถวาดในลักษณะดังต่อไปนี้ 1402 01:07:05,280 --> 01:07:08,520 ถ้าผมต้องการที่จะเก็บหมายเลขหนึ่งใน program-- จึงเป็นเดือนกันยายน 1403 01:07:08,520 --> 01:07:12,600 ฉันได้รับนักเรียนของฉันแบบทดสอบ; ฉันต้องการ ในการจัดเก็บแบบทดสอบครั้งแรกของนักเรียน 1404 01:07:12,600 --> 01:07:16,220 และพวกเขาได้ 100 ผม it-- กำลังจะถามคอมพิวเตอร์ของฉัน 1405 01:07:16,220 --> 01:07:19,540 โดยวิธีการของโปรแกรมที่ฉันได้ เขียนสำหรับหนึ่งก้อนของหน่วยความจำ 1406 01:07:19,540 --> 01:07:22,570 และฉันจะเก็บ จำนวน 100 ในนั้นและที่มัน 1407 01:07:22,570 --> 01:07:24,820 >> จากนั้นไม่กี่สัปดาห์ต่อมา เมื่อฉันได้รับการตอบคำถามที่สองของฉัน 1408 01:07:24,820 --> 01:07:27,890 และก็ถึงเวลาที่จะพิมพ์ ในการที่ 90% ผมจะ 1409 01:07:27,890 --> 01:07:32,129 จะถามคอมพิวเตอร์ Hey, คอมพิวเตอร์, ฉันจะมีหน่วยความจำอันอื่นได้หรือไม่ 1410 01:07:32,129 --> 01:07:34,170 มันเป็นไปได้ที่จะให้ฉันนี้ อันว่างเปล่าของหน่วยความจำ 1411 01:07:34,170 --> 01:07:39,370 ฉันจะใส่หมายเลข 90 แต่ในโปรแกรมของฉันอย่างใดหรือ other-- 1412 01:07:39,370 --> 01:07:42,100 และเราจะไม่ต้องกังวลเกี่ยวกับ ไวยากรณ์สำหรับ this-- ฉันต้องการ 1413 01:07:42,100 --> 01:07:44,430 อย่างใดโยงสิ่งเหล่านี้ร่วมกัน 1414 01:07:44,430 --> 01:07:47,430 และฉันจะโยงเข้าด้วยกันด้วย สิ่งที่ดูเหมือนว่าลูกศรที่นี่ 1415 01:07:47,430 --> 01:07:50,050 >> แบบทดสอบที่สามที่เกิดขึ้น ฉันจะบอกว่าเดี๋ยวก่อนคอมพิวเตอร์ 1416 01:07:50,050 --> 01:07:51,680 ให้ฉันหน่วยความจำอันอื่น 1417 01:07:51,680 --> 01:07:54,660 และฉันจะใส่ลง สิ่งที่มันเป็นเช่น 75, 1418 01:07:54,660 --> 01:07:56,920 และฉันต้องห่วงโซ่นี้ ร่วมกันอย่างใดในขณะนี้ 1419 01:07:56,920 --> 01:08:00,290 แบบทดสอบที่สี่มาพร้อมและอาจ ที่ช่วงท้ายของภาคการศึกษา 1420 01:08:00,290 --> 01:08:03,140 และโดยจุดที่โปรแกรมของฉัน อาจจะมีการใช้หน่วยความจำ 1421 01:08:03,140 --> 01:08:05,540 ทั่วทุกสถานที่ทั่วร่างกาย 1422 01:08:05,540 --> 01:08:08,170 และอื่น ๆ เพียงเพื่อลูกผม จะวาดออกมานี้ 1423 01:08:08,170 --> 01:08:11,260 quiz-- ฉันลืมว่ามันคืออะไร; ผม คิดว่าอาจจะ 80 หรือ something-- 1424 01:08:11,260 --> 01:08:12,500 วิธีมากกว่าที่นี่ 1425 01:08:12,500 --> 01:08:15,920 >> แต่นั่นก็ไม่เป็นไรเพราะ pictorially ฉันจะวาดเส้นนี้ 1426 01:08:15,920 --> 01:08:19,063 ในคำอื่น ๆ ในความเป็นจริง ในฮาร์ดแวร์ของคอมพิวเตอร์ของคุณ 1427 01:08:19,063 --> 01:08:20,979 คะแนนครั้งแรกอาจจะ จบลงที่นี่เพราะมันเป็น 1428 01:08:20,979 --> 01:08:22,529 ที่เหมาะสมในการเริ่มต้นของภาคการศึกษา 1429 01:08:22,529 --> 01:08:25,810 หนึ่งต่อไปอาจจะจบลงที่นี่ เพราะบิตของเวลาได้ผ่านไป 1430 01:08:25,810 --> 01:08:27,210 และโปรแกรมที่ช่วยให้ทำงาน 1431 01:08:27,210 --> 01:08:30,060 คะแนนต่อไปซึ่งเป็น 75 อาจจะมากกว่าที่นี่ 1432 01:08:30,060 --> 01:08:33,420 และคะแนนที่ผ่านมาอาจจะมี 80 ซึ่งเป็นมากกว่าที่นี่ 1433 01:08:33,420 --> 01:08:38,729 >> ดังนั้นในความเป็นจริงทางร่างกายนี้อาจจะมี สิ่งที่หน่วยความจำของคอมพิวเตอร์ของคุณมีลักษณะเหมือน 1434 01:08:38,729 --> 01:08:41,569 แต่นี้ไม่ได้มีประโยชน์ทางจิต กระบวนทัศน์สำหรับโปรแกรมคอมพิวเตอร์ 1435 01:08:41,569 --> 01:08:44,649 ทำไมคุณควรดูแลที่ ห่าข้อมูลของคุณกำลังจะสิ้นสุดลงได้หรือไม่ 1436 01:08:44,649 --> 01:08:46,200 คุณต้องการเพียงแค่การจัดเก็บข้อมูล 1437 01:08:46,200 --> 01:08:49,390 >> นี้เป็นชนิดเช่นการสนทนาของเรา ก่อนหน้านี้ในการวาดภาพก้อน 1438 01:08:49,390 --> 01:08:52,200 ทำไมคุณดูแลสิ่งที่ มุมที่เป็นก้อน 1439 01:08:52,200 --> 01:08:53,740 และวิธีการที่คุณต้องเปิดการวาดมันได้หรือไม่ 1440 01:08:53,740 --> 01:08:54,950 คุณต้องการเพียงแค่ก้อน 1441 01:08:54,950 --> 01:08:57,359 ในทำนองเดียวกันที่นี่คุณ เพียงแค่ต้องการหนั​​งสือชั้น 1442 01:08:57,359 --> 01:08:59,559 คุณเพียงต้องการที่จะคิดว่า นี้เป็นรายการของตัวเลข 1443 01:08:59,559 --> 01:09:01,350 ใครสนใจว่าเป็น ดำเนินการในฮาร์ดแวร์? 1444 01:09:01,350 --> 01:09:05,180 >> ดังนั้นสิ่งที่เป็นนามธรรมในขณะนี้ คือภาพที่นี่ 1445 01:09:05,180 --> 01:09:07,580 นี่คือรายการที่เชื่อมโยงเป็น โปรแกรมเมอร์จะเรียกว่า 1446 01:09:07,580 --> 01:09:10,640 ตราบเท่าที่คุณมี รายการที่เห็นได้ชัดของตัวเลข 1447 01:09:10,640 --> 01:09:14,990 แต่มันเชื่อมโยง pictorially โดยวิธีการของลูกศรเหล่านี้ 1448 01:09:14,990 --> 01:09:18,510 และลูกศรทั้งหมดเหล่านี้ are-- ใต้ เครื่องดูดควัน, ถ้าคุณอยากรู้อยากเห็น 1449 01:09:18,510 --> 01:09:23,210 จำได้ว่าฮาร์ดแวร์ทางกายภาพของเรามี ที่อยู่ศูนย์หนึ่งสองสามสี่ 1450 01:09:23,210 --> 01:09:28,465 ลูกศรทั้งหมดเหล่านี้เป็นเหมือนแผนที่ หรือเส้นทางที่ 90 ถ้า is-- ในขณะนี้ 1451 01:09:28,465 --> 01:09:29,090 ผมได้รับการนับ 1452 01:09:29,090 --> 01:09:31,750 >> ศูนย์หนึ่งสองสาม สี่ห้าหกเจ็ด 1453 01:09:31,750 --> 01:09:35,640 ดูเหมือนว่า 90 อยู่ที่ หน่วยความจำหมายเลขเจ็ด 1454 01:09:35,640 --> 01:09:38,460 ลูกศรทั้งหมดเหล่านี้คือ เหมือนเศษเล็ก ๆ น้อย ๆ ที่ทำจากกระดาษ 1455 01:09:38,460 --> 01:09:42,439 ที่ให้เส้นทางไปยัง โปรแกรมที่บอกว่าทำตามแผนที่นี้ 1456 01:09:42,439 --> 01:09:43,880 ที่จะได้รับไปยังสถานที่เจ็ด 1457 01:09:43,880 --> 01:09:46,680 และมีคุณจะได้พบกับ คะแนนแบบทดสอบของนักเรียนที่สอง 1458 01:09:46,680 --> 01:09:52,100 ในขณะที่ 75-- ถ้าฉันยังคงนี้ นี้เป็นเจ็ดแปดเก้า, 10, 11, 12, 1459 01:09:52,100 --> 01:09:54,240 13, 14, 15 1460 01:09:54,240 --> 01:09:59,080 >> นี้ลูกศรอื่น ๆ เพียงแค่แสดงให้เห็นถึง แผนที่ไปยังตำแหน่งหน่วยความจำ 15 1461 01:09:59,080 --> 01:10:02,550 แต่อีกครั้งโปรแกรมเมอร์โดยทั่วไปจะ ไม่สนใจเกี่ยวกับระดับของรายละเอียดนี้ 1462 01:10:02,550 --> 01:10:05,530 และในการเขียนโปรแกรมมากที่สุดทุก ภาษาวันนี้โปรแกรมเมอร์ 1463 01:10:05,530 --> 01:10:10,490 จะไม่ได้ทราบว่าในหน่วยความจำ ตัวเลขเหล่านี้เป็นจริง 1464 01:10:10,490 --> 01:10:14,830 ทั้งหมดที่เขาหรือเธอมีการดูแลเกี่ยวกับการเป็น ว่าพวกเขาจะถูกเชื่อมโยงเข้าด้วยกันอย่างใด 1465 01:10:14,830 --> 01:10:18,390 ในโครงสร้างข้อมูลเช่นนี้ 1466 01:10:18,390 --> 01:10:21,580 >> แต่มันจะเปิดออกไม่ได้ ที่จะได้รับเทคนิคเกินไป 1467 01:10:21,580 --> 01:10:27,430 แต่เพียงเพราะเราอาจจะสามารถ ที่จะมีการอภิปรายนี้ที่นี่ 1468 01:10:27,430 --> 01:10:33,630 สมมติว่าเราทบทวน ปัญหานี้ที่นี่ของอาร์เรย์ 1469 01:10:33,630 --> 01:10:35,780 ลองมาดูว่าเราเสียใจไปที่นี่ 1470 01:10:35,780 --> 01:10:42,950 นี้เป็น 100, 90, 75, และ 80 1471 01:10:42,950 --> 01:10:44,980 >> ผมขอสั้น ๆ เรียกร้องนี้ 1472 01:10:44,980 --> 01:10:48,980 นี่คืออาร์เรย์และอีกครั้ง ลักษณะเด่นของอาร์เรย์ 1473 01:10:48,980 --> 01:10:52,400 คือว่าข้อมูลทั้งหมดของคุณจะกลับมาเป็น กลับไปกลับใน memory-- แท้จริง 1474 01:10:52,400 --> 01:10:56,830 หนึ่งไบต์หรือบางทีสี่ไบต์ บางจำนวนคงที่ของไบต์ออกไป 1475 01:10:56,830 --> 01:11:00,710 ในรายการที่เชื่อมโยงซึ่งเราอาจจะวาด เช่นนี้อยู่ภายใต้ฝากระโปรงที่ 1476 01:11:00,710 --> 01:11:02,000 รู้ว่าสิ่งที่ว่าคืออะไร? 1477 01:11:02,000 --> 01:11:03,630 มันไม่จำเป็นที่จะต้องไหลเช่นนี้ 1478 01:11:03,630 --> 01:11:06,050 ข้อมูลบางส่วนที่อาจจะ กลับไปทางซ้ายไปอยู่ที่นั่น 1479 01:11:06,050 --> 01:11:07,530 คุณไม่ได้รู้ว่า 1480 01:11:07,530 --> 01:11:15,430 >> และเพื่อให้มีอาร์เรย์คุณมี คุณลักษณะที่รู้จักในฐานะเข้าถึงโดยสุ่ม 1481 01:11:15,430 --> 01:11:20,570 และสิ่งที่เข้าถึงโดยสุ่มหมายถึงคือ ให้คอมพิวเตอร์สามารถกระโดดได้ทันที 1482 01:11:20,570 --> 01:11:22,730 ไปยังสถานที่ในอาร์เรย์ใด ๆ 1483 01:11:22,730 --> 01:11:23,580 ทำไม? 1484 01:11:23,580 --> 01:11:26,000 เนื่องจากคอมพิวเตอร์ที่รู้ ว่าสถานที่แรกคือ 1485 01:11:26,000 --> 01:11:29,540 ศูนย์หนึ่งสองและสาม 1486 01:11:29,540 --> 01:11:33,890 >> และดังนั้นหากคุณต้องการที่จะไปจาก องค์ประกอบนี้ไปยังองค์ประกอบถัดไป 1487 01:11:33,890 --> 01:11:36,099 คุณอย่างแท้จริงใน จิตใจของคอมพิวเตอร์เพียงแค่เพิ่มหนึ่ง 1488 01:11:36,099 --> 01:11:39,140 หากคุณต้องการที่จะไปองค์ประกอบที่สาม เพียงแค่เพิ่ม one-- องค์ประกอบต่อไปเพียงแค่ 1489 01:11:39,140 --> 01:11:40,290 เพิ่มอีกหนึ่ง 1490 01:11:40,290 --> 01:11:42,980 อย่างไรก็ตามในรุ่นนี้ ของเรื่องสมมติ 1491 01:11:42,980 --> 01:11:46,080 คอมพิวเตอร์ในขณะที่กำลังมองหา หรือการจัดการกับหมายเลข 100 1492 01:11:46,080 --> 01:11:49,770 คุณจะได้รับการต่อไป ชั้นประถมศึกษาปีในหนังสือชั้นหรือไม่ 1493 01:11:49,770 --> 01:11:52,560 >> คุณต้องใช้เวลาเจ็ด ขั้นตอนซึ่งเป็นพล 1494 01:11:52,560 --> 01:11:58,120 ที่จะได้รับอย่างใดอย่างหนึ่งต่อไปคุณจะต้อง ใช้เวลาอีกแปดขั้นตอนเพื่อให้ได้ถึง 15 1495 01:11:58,120 --> 01:12:02,250 ในคำอื่น ๆ ก็ไม่ได้เป็น ช่องว่างระหว่างตัวเลขคงที่ 1496 01:12:02,250 --> 01:12:04,857 และดังนั้นจึงเป็นเพียงแค่เตะ คอมพิวเตอร์เวลามากขึ้นเป็นจุด 1497 01:12:04,857 --> 01:12:06,940 คอมพิวเตอร์มีการค้นหา ผ่านหน่วยความจำในการสั่งซื้อ 1498 01:12:06,940 --> 01:12:08,990 เพื่อค้นหาสิ่งที่คุณกำลังมองหา 1499 01:12:08,990 --> 01:12:14,260 >> ดังนั้นในขณะที่อาร์เรย์มีแนวโน้มที่จะ structure-- ข้อมูลได้อย่างรวดเร็วเพราะคุณ 1500 01:12:14,260 --> 01:12:17,610 สามารถแท้จริงเพียงแค่ทำคณิตศาสตร์ที่เรียบง่าย และได้รับตำแหน่งที่คุณต้องการโดยการเพิ่มหนึ่ง 1501 01:12:17,610 --> 01:12:21,300 สำหรับ instance-- รายการเชื่อมโยง คุณเสียสละคุณลักษณะที่ 1502 01:12:21,300 --> 01:12:24,020 คุณก็ไม่สามารถไปจากครั้งแรก ที่สองสามสี่ไป 1503 01:12:24,020 --> 01:12:25,240 คุณต้องทำตามแผนที่ 1504 01:12:25,240 --> 01:12:28,160 คุณต้องทำตามขั้นตอนมากขึ้น ที่จะได้รับค่าเหล่านั้นซึ่ง 1505 01:12:28,160 --> 01:12:30,230 ก็ดูเหมือนจะได้รับการเพิ่มค่าใช้จ่าย 1506 01:12:30,230 --> 01:12:35,910 ดังนั้นเรากำลังจ่ายราคา แต่สิ่งที่เป็น คุณลักษณะที่แดนที่กำลังมองหาที่นี่? 1507 01:12:35,910 --> 01:12:38,110 อะไรรายการที่เชื่อมโยง เห็นได้ชัดว่าช่วยให้เราสามารถที่จะทำ 1508 01:12:38,110 --> 01:12:40,240 ซึ่งเป็นที่มาของ เรื่องนี้โดยเฉพาะ? 1509 01:12:40,240 --> 01:12:43,250 1510 01:12:43,250 --> 01:12:43,830 >> อย่างแน่นอน 1511 01:12:43,830 --> 01:12:46,220 ขนาดแบบไดนามิกเพื่อมัน 1512 01:12:46,220 --> 01:12:48,040 เราสามารถเพิ่มในรายการนี​​้ 1513 01:12:48,040 --> 01:12:51,430 เรายังสามารถหดรายการดังนั้น ว่าเรากำลังเป็นเพียงการใช้หน่วยความจำมาก 1514 01:12:51,430 --> 01:12:55,560 ในขณะที่เราต้องการจริงและอื่น ๆ เราไม่เคยเกินจัดสรร 1515 01:12:55,560 --> 01:12:58,470 >> ตอนนี้เพียงเพื่อจะจู้จี้จุกจิกจริงๆ มีค่าใช้จ่ายที่ซ่อนอยู่ 1516 01:12:58,470 --> 01:13:01,980 ดังนั้นคุณไม่ควรเพียงแจ้งให้เราโน้มน้าว คุณว่านี่คือการถ่วงดุลอำนาจที่น่าสนใจ 1517 01:13:01,980 --> 01:13:04,190 มีอีกค่าใช้จ่ายที่ซ่อนอยู่ที่นี่ 1518 01:13:04,190 --> 01:13:06,550 ผลประโยชน์ที่จะมีความชัดเจน คือการที่เราได้รับอย่างแคล่วคล่อง 1519 01:13:06,550 --> 01:13:10,359 ถ้าผมต้องการองค์ประกอบอื่นที่ฉันสามารถทำได้เพียงแค่ วาดมันและใส่หมายเลขในการมี 1520 01:13:10,359 --> 01:13:12,150 และจากนั้นผมสามารถเชื่อมโยง กับภาพที่นี่ 1521 01:13:12,150 --> 01:13:14,970 ในขณะที่กว่าที่นี่อีกครั้งถ้าเราได้ ทาสีตัวเองในมุมที่ 1522 01:13:14,970 --> 01:13:19,410 ถ้าอย่างอื่นอยู่แล้วโดยใช้ หน่วยความจำที่นี่ฉันออกจากโชค 1523 01:13:19,410 --> 01:13:21,700 ผมเคยวาดตัวเองในมุม 1524 01:13:21,700 --> 01:13:24,390 >> แต่สิ่งที่ซ่อนอยู่ ค่าใช้จ่ายในภาพนี้? 1525 01:13:24,390 --> 01:13:27,690 มันไม่ใช่แค่จำนวนเงินที่ ของเวลาที่ใช้ 1526 01:13:27,690 --> 01:13:29,870 ที่จะไปจากที่นี่ไปที่นี่ ซึ่งเป็นเจ็ดขั้นตอนแล้ว 1527 01:13:29,870 --> 01:13:32,820 แปดขั้นตอนซึ่งเป็นมากกว่าหนึ่ง 1528 01:13:32,820 --> 01:13:34,830 มีอะไรอีกค่าใช้จ่ายที่ซ่อนอยู่? 1529 01:13:34,830 --> 01:13:35,440 ไม่ได้เป็นเพียงเวลา 1530 01:13:35,440 --> 01:13:44,790 1531 01:13:44,790 --> 01:13:49,940 ข้อมูลเพิ่มเติม จำเป็นเพื่อให้บรรลุภาพนี้ 1532 01:13:49,940 --> 01:13:53,210 >> ใช่ว่าแผนที่เหล่านั้นเศษเล็ก ๆ น้อย ๆ กระดาษที่ผมให้อธิบายให้พวกเขาเป็น 1533 01:13:53,210 --> 01:13:55,650 เหล่านี้ arrows-- เหล่านี้จะไม่ฟรี 1534 01:13:55,650 --> 01:13:57,660 computer-- คุณรู้ว่า สิ่งที่มีเครื่องคอมพิวเตอร์ 1535 01:13:57,660 --> 01:13:58,790 มันมีศูนย์และคน 1536 01:13:58,790 --> 01:14:03,170 ถ้าคุณต้องการที่จะเป็นตัวแทนของลูกศรหรือ แผนที่หรือหมายเลขที่คุณต้องการหน่วยความจำบาง 1537 01:14:03,170 --> 01:14:05,950 ดังนั้นราคาอื่น ๆ ที่คุณ จ่ายสำหรับรายการเชื่อมโยง 1538 01:14:05,950 --> 01:14:09,070 วิทยาศาสตร์คอมพิวเตอร์ทั่วไป ทรัพยากรยังเป็นพื้นที่ 1539 01:14:09,070 --> 01:14:11,710 >> และแน่นอนดังนั้นทั่วไป ท่ามกลางความสมดุล 1540 01:14:11,710 --> 01:14:15,580 ในการออกแบบวิศวกรรมซอฟต์แวร์ ระบบเป็นเวลาและ space-- 1541 01:14:15,580 --> 01:14:18,596 เป็นสองส่วนผสมของคุณทั้งสอง ของส่วนผสมที่มีราคาแพงที่สุดของคุณ 1542 01:14:18,596 --> 01:14:21,220 นี้เป็นต้นทุนฉันมีเวลามากขึ้น เพราะผมต้องทำตามแผนที่นี้ 1543 01:14:21,220 --> 01:14:25,730 แต่ก็ยังมีต้นทุนฉันพื้นที่มากขึ้น เพราะผมจะต้องเก็บแผนที่นี้ไปรอบ ๆ 1544 01:14:25,730 --> 01:14:28,730 ดังนั้นความหวังที่เราได้ชนิดของ กล่าวถึงมากกว่าเมื่อวานนี้และวันนี้ 1545 01:14:28,730 --> 01:14:31,720 คือการที่ผลประโยชน์ จะมีค่าเกินค่าใช้จ่าย 1546 01:14:31,720 --> 01:14:33,870 >> แต่ไม่มีทางออกที่ชัดเจนที่นี่ 1547 01:14:33,870 --> 01:14:35,870 บางทีมันอาจจะเป็น better-- La รวดเร็วและสกปรก 1548 01:14:35,870 --> 01:14:38,660 เป็นคารีมเสนอ earlier-- จะโยนหน่วยความจำที่ปัญหาที่เกิดขึ้น 1549 01:14:38,660 --> 01:14:42,520 เพียงซื้อหน่วยความจำเพิ่มเติมคิดน้อย อย่างหนักเกี่ยวกับการแก้ปัญหา 1550 01:14:42,520 --> 01:14:44,595 และแก้ปัญหาในวิธีที่ง่าย 1551 01:14:44,595 --> 01:14:46,720 และแน่นอนก่อนหน้านี้เมื่อ เราได้พูดคุยเกี่ยวกับความสมดุล, 1552 01:14:46,720 --> 01:14:49,190 มันไม่ได้อยู่ในพื้นที่ คอมพิวเตอร์และเวลา 1553 01:14:49,190 --> 01:14:51,810 มันเป็นช่วงเวลาที่นักพัฒนาซึ่ง ยังเป็นทรัพยากรอื่น 1554 01:14:51,810 --> 01:14:54,829 >> ดังนั้นอีกครั้งมันเป็นนี้กระทำสมดุล พยายามที่จะตัดสินใจว่าสิ่งเหล่านั้น 1555 01:14:54,829 --> 01:14:55,870 คุณยินดีที่จะใช้จ่าย? 1556 01:14:55,870 --> 01:14:57,380 ซึ่งเป็นอย่างน้อยราคาแพง? 1557 01:14:57,380 --> 01:15:01,040 ที่ทำให้ผลลัพธ์ที่ดีขึ้นหรือไม่ 1558 01:15:01,040 --> 01:15:01,540 ใช่? 1559 01:15:01,540 --> 01:15:11,310 1560 01:15:11,310 --> 01:15:12,580 >> จริง 1561 01:15:12,580 --> 01:15:15,970 ในกรณีนี้ถ้าคุณ เป็นตัวแทนของตัวเลขใน maps-- 1562 01:15:15,970 --> 01:15:18,820 เหล่านี้เรียกว่าในหลายภาษา "ชี้" หรือ "ที่อยู่" - 1563 01:15:18,820 --> 01:15:20,390 มันเป็นคู่พื้นที่ 1564 01:15:20,390 --> 01:15:24,390 ที่ไม่จำเป็นต้องเป็นเลวเป็นคู่ถ้า ตอนนี้เราเพียงแค่การจัดเก็บตัวเลข 1565 01:15:24,390 --> 01:15:27,410 สมมติว่าเราได้รับการจัดเก็บ ระเบียนผู้ป่วยใน hospital-- 1566 01:15:27,410 --> 01:15:30,870 ดังนั้นชื่อของเพียร์สัน, หมายเลขโทรศัพท์ หมายเลขประกันสังคมแพทย์ 1567 01:15:30,870 --> 01:15:31,540 ประวัติศาสตร์ 1568 01:15:31,540 --> 01:15:34,160 กล่องนี้อาจจะมีมาก ใหญ่มากซึ่งในกรณีนี้ 1569 01:15:34,160 --> 01:15:38,000 ตัวชี้เล็ก ๆ ที่อยู่ของ ลิเมนต์ต่อไปก็ไม่ได้เป็นเรื่องใหญ่ 1570 01:15:38,000 --> 01:15:40,620 มันเป็นเช่นขอบ ค่าใช้จ่ายก็ไม่เป็นไร 1571 01:15:40,620 --> 01:15:43,210 แต่ในกรณีนี้ใช่มันเป็นสองเท่า 1572 01:15:43,210 --> 01:15:45,290 คำถามที่ดี. 1573 01:15:45,290 --> 01:15:47,900 >> พูดคุยเกี่ยวกับเวลา เล็ก ๆ น้อย ๆ เป็นรูปธรรม 1574 01:15:47,900 --> 01:15:50,380 เป็นเวลาทำงานอะไร การค้นหารายการนี​​้? 1575 01:15:50,380 --> 01:15:53,640 สมมติว่าผมต้องการที่จะค้นหา ผ่านเกรดทั้งหมดของนักเรียน 1576 01:15:53,640 --> 01:15:55,980 และมีเกรด n ในโครงสร้างข้อมูลนี้ 1577 01:15:55,980 --> 01:15:58,830 นี่เกินไปเราสามารถยืม คำศัพท์ก่อนหน้านี้ 1578 01:15:58,830 --> 01:16:00,890 นี่คือโครงสร้างข้อมูลเชิงเส้น 1579 01:16:00,890 --> 01:16:04,570 >> O ใหญ่ของ n เป็นสิ่งที่จำเป็นที่จะได้รับ การสิ้นสุดของโครงสร้างข้อมูลนี้ 1580 01:16:04,570 --> 01:16:08,410 whereas-- และเรายังไม่ได้เห็น นี้ before-- อาร์เรย์ที่จะช่วยให้คุณ 1581 01:16:08,410 --> 01:16:13,555 สิ่งที่เรียกว่าเวลาคงซึ่งหมายความว่า ขั้นตอนที่หนึ่งหรือสองขั้นตอนหรือ 10 steps-- 1582 01:16:13,555 --> 01:16:14,180 ไม่สำคัญ 1583 01:16:14,180 --> 01:16:15,440 มันเป็นจำนวนคงที่ 1584 01:16:15,440 --> 01:16:17,440 มันมีอะไรจะทำอย่างไรกับ ขนาดของอาร์เรย์ 1585 01:16:17,440 --> 01:16:20,130 และเหตุผลในการนั้น อีกครั้งคือการเข้าถึงแบบสุ่ม 1586 01:16:20,130 --> 01:16:23,180 คอมพิวเตอร์สามารถเพียงทันที ข้ามไปยังสถานที่อื่น 1587 01:16:23,180 --> 01:16:27,770 เพราะพวกเขากำลังเหมือนกันทั้งหมด ระยะทางจากทุกสิ่งทุกอย่าง 1588 01:16:27,770 --> 01:16:29,112 มีความคิดที่ไม่เกี่ยวข้องคือ 1589 01:16:29,112 --> 01:16:31,900 1590 01:16:31,900 --> 01:16:32,400 ก็ดี 1591 01:16:32,400 --> 01:16:39,230 ดังนั้นถ้าฉันสามารถให้ฉันพยายามที่จะ วาดภาพสองภาพสุดท้าย 1592 01:16:39,230 --> 01:16:42,830 หนึ่งที่พบบ่อยมากที่รู้จักกันเป็นตารางแฮช 1593 01:16:42,830 --> 01:16:51,120 ดังนั้นเพื่อกระตุ้นการสนทนานี้ ให้ฉันคิดเกี่ยวกับวิธีการทำเช่นนี้ 1594 01:16:51,120 --> 01:16:52,610 >> ดังนั้นวิธีการเกี่ยวกับเรื่องนี้? 1595 01:16:52,610 --> 01:16:55,160 สมมติว่าปัญหาที่เกิดขึ้น เราต้องการที่จะแก้ปัญหาในขณะนี้ 1596 01:16:55,160 --> 01:16:58,360 คือการใช้ใน dictionary-- เพื่อให้ทั้งกลุ่มของคำในภาษาอังกฤษ 1597 01:16:58,360 --> 01:16:59,330 หรืออะไรก็ตาม 1598 01:16:59,330 --> 01:17:02,724 และมีเป้าหมายที่จะสามารถที่จะตอบ คำถามของรูปแบบนี้คือคำ? 1599 01:17:02,724 --> 01:17:04,640 ดังนั้นคุณจึงต้องการที่จะดำเนินการ ตรวจสอบการสะกดเพียง 1600 01:17:04,640 --> 01:17:07,220 เหมือนพจนานุกรมทางกายภาพ ที่คุณสามารถดูสิ่งขึ้นใน 1601 01:17:07,220 --> 01:17:10,490 สมมติว่าผมจะทำเช่นนี้กับอาร์เรย์ 1602 01:17:10,490 --> 01:17:12,590 ฉันจะทำเช่นนี้ 1603 01:17:12,590 --> 01:17:20,756 >> และคิดว่าคำพูดที่มีแอปเปิ้ล และกล้วยแคนตาลูป 1604 01:17:20,756 --> 01:17:23,330 1605 01:17:23,330 --> 01:17:26,465 และผมก็ไม่สามารถคิดของผลไม้ ที่เริ่มต้นด้วย D, ดังนั้นเราเพียง 1606 01:17:26,465 --> 01:17:27,590 จะมีสามผลไม้ 1607 01:17:27,590 --> 01:17:31,510 ดังนั้นนี่คืออาร์เรย์และเรา การจัดเก็บทั้งหมดของคำเหล่านี้ 1608 01:17:31,510 --> 01:17:34,200 ในพจนานุกรมนี้เป็นอาร์เรย์ 1609 01:17:34,200 --> 01:17:39,350 คำถามก็คือวิธีการอื่น คุณสามารถเก็บข้อมูลนี้? 1610 01:17:39,350 --> 01:17:43,160 >> ดีฉันชนิดของการโกงที่นี่เพราะ แต่ละตัวอักษรเหล่านี้ในคำว่า 1611 01:17:43,160 --> 01:17:44,490 เป็นจริงไบต์ของแต่ละบุคคล 1612 01:17:44,490 --> 01:17:46,740 ดังนั้นถ้าผมอยากจะเป็น จู้จี้จุกจิกจู้จี้จุกจิกฉันควรจะจริงๆ 1613 01:17:46,740 --> 01:17:49,600 จะแบ่งนี้ขึ้นไปมาก ชิ้นเล็กของหน่วยความจำ 1614 01:17:49,600 --> 01:17:51,289 และเราสามารถทำตรงนั้น 1615 01:17:51,289 --> 01:17:53,580 แต่เรากำลังจะวิ่งเข้ามา ปัญหาที่เกิดขึ้นเช่นเดียวกับก่อน 1616 01:17:53,580 --> 01:17:56,674 เกิดอะไรขึ้นถ้าเป็นเมอร์เรียมเว็บสเตอร์หรือฟอร์ด ไม่ทุก year-- พวกเขาเพิ่มคำ 1617 01:17:56,674 --> 01:17:59,340 ไป dictionary-- เราทำไม่ได้ จำเป็นต้องการที่จะวาดภาพตัวเอง 1618 01:17:59,340 --> 01:18:00,780 ในมุมที่มีมากมายอยู่แล้ว? 1619 01:18:00,780 --> 01:18:05,710 >> ดังนั้นแทนที่จะอาจจะเป็นวิธีการที่ชาญฉลาด คือการใส่แอปเปิ้ลในโหนดของตัวเองหรือกล่อง 1620 01:18:05,710 --> 01:18:11,190 ในขณะที่เราจะพูดว่ากล้วยและ แล้วที่นี่เรามีแคนตาลูป 1621 01:18:11,190 --> 01:18:14,990 1622 01:18:14,990 --> 01:18:16,790 และสตริงเราสิ่งเหล่านี้ร่วมกัน 1623 01:18:16,790 --> 01:18:19,980 ดังนั้นนี่คืออาร์เรย์และ นี้เป็นรายการที่เชื่อมโยง 1624 01:18:19,980 --> 01:18:23,300 ถ้าคุณไม่สามารถค่อนข้างเห็นมันเป็นเพียงแค่ บอกว่า "อาเรย์" และกล่าวว่า "รายการ". 1625 01:18:23,300 --> 01:18:25,780 >> ดังนั้นเราจึงมีเดียวกัน ปัญหาที่แน่นอนเป็นมาก่อน 1626 01:18:25,780 --> 01:18:28,600 โดยขณะนี้เรามี แคล่วคล่องในรายการที่เชื่อมโยงของเรา 1627 01:18:28,600 --> 01:18:31,090 แต่เรามีพจนานุกรมค่อนข้างช้า 1628 01:18:31,090 --> 01:18:32,870 สมมติว่าผมต้องการที่จะมองขึ้นคำ 1629 01:18:32,870 --> 01:18:35,430 มันอาจจะพาฉัน O ใหญ่ของ n ขั้นตอนเพราะคำว่าอาจจะ 1630 01:18:35,430 --> 01:18:37,840 เป็นทุกทางในตอนท้ายของ รายการเช่นแคนตาลูป 1631 01:18:37,840 --> 01:18:40,600 และปรากฎว่า ในการเขียนโปรแกรม, การจัดเรียง 1632 01:18:40,600 --> 01:18:42,700 ของจอกศักดิ์สิทธิ์ของข้อมูล โครงสร้างเป็นสิ่งที่ 1633 01:18:42,700 --> 01:18:46,620 ที่ช่วยให้คุณอย่างต่อเนื่อง เวลาเช่นอาร์เรย์ 1634 01:18:46,620 --> 01:18:50,870 แต่ที่ยังคงช่วยให้คุณมีชีวิตชีวา 1635 01:18:50,870 --> 01:18:52,940 >> ดังนั้นเราจึงสามารถมีที่ดีที่สุดของโลกทั้งสอง? 1636 01:18:52,940 --> 01:18:55,570 และแน่นอนมีบางสิ่งบางอย่าง เรียกว่าตารางแฮช 1637 01:18:55,570 --> 01:18:59,320 ที่ช่วยให้คุณทำตรง ที่แม้จะประมาณ 1638 01:18:59,320 --> 01:19:03,140 ตารางแฮชเป็นนักเล่น โครงสร้างข้อมูลที่เรา 1639 01:19:03,140 --> 01:19:06,340 สามารถคิดเป็น รวมกันของ array-- 1640 01:19:06,340 --> 01:19:12,390 และฉันจะวาดมัน เช่น this-- และรายการเชื่อมโยง 1641 01:19:12,390 --> 01:19:17,310 ว่าฉันจะวาดเช่นนี้มากกว่าที่นี่ 1642 01:19:17,310 --> 01:19:19,760 >> และวิธีการสิ่งนี้ ผลงานจะเป็นดังนี้ 1643 01:19:19,760 --> 01:19:23,310 1644 01:19:23,310 --> 01:19:29,540 หากนี่ now-- กัญชา table-- เป็นโครงสร้างข้อมูลที่สามของฉัน 1645 01:19:29,540 --> 01:19:32,590 และฉันต้องการที่จะเก็บ คำพูดในเรื่องนี้ฉันทำไม่ได้ 1646 01:19:32,590 --> 01:19:35,440 ต้องการเพียงแค่การจัดเก็บทั้งหมดของ คำพูดกลับไปกลับไปกลับไปกลับ 1647 01:19:35,440 --> 01:19:37,430 ฉันต้องการที่จะใช้ประโยชน์จากบางส่วน ชิ้นส่วนของข้อมูล 1648 01:19:37,430 --> 01:19:40,330 เกี่ยวกับคำพูดที่จะช่วยให้ ฉันได้รับมันที่มันได้เร็วขึ้น 1649 01:19:40,330 --> 01:19:43,666 >> ให้ดังนั้นคำแอปเปิ้ล และกล้วยและแคนตาลูป 1650 01:19:43,666 --> 01:19:45,040 ผมจงใจเลือกคำพูดเหล่านั้น 1651 01:19:45,040 --> 01:19:45,340 ทำไม? 1652 01:19:45,340 --> 01:19:47,631 สิ่งที่จัดเรียงของพื้นฐาน ที่แตกต่างกันเกี่ยวกับสาม? 1653 01:19:47,631 --> 01:19:49,950 1654 01:19:49,950 --> 01:19:51,484 สิ่งที่เห็นได้ชัด? 1655 01:19:51,484 --> 01:19:52,900 พวกเขาเริ่มต้นด้วยตัวอักษรที่แตกต่างกัน 1656 01:19:52,900 --> 01:19:53,900 >> เพื่อให้คุณรู้อะไรไหม 1657 01:19:53,900 --> 01:19:57,120 แทนที่จะใส่ทุกคำของฉันใน ถังเดียวกันเพื่อที่จะพูด 1658 01:19:57,120 --> 01:20:00,390 เช่นเดียวกับในรายการใหญ่หนึ่งทำไมทำไม่ได้ อย่างน้อยผมลองเพิ่มประสิทธิภาพ 1659 01:20:00,390 --> 01:20:04,180 และทำให้รายการของฉัน 1/26 เป็นเวลานาน 1660 01:20:04,180 --> 01:20:07,440 เพิ่มประสิทธิภาพที่น่าสนใจ อาจจะมีเหตุผลที่ทำไม่ได้ 1661 01:20:07,440 --> 01:20:10,650 I-- เมื่อใส่คำ ในโครงสร้างข้อมูลนี้ 1662 01:20:10,650 --> 01:20:14,300 ในหน่วยความจำของคอมพิวเตอร์ทำไม ไม่ฉันใส่ทั้งหมด 'a' คำพูดที่นี่ 1663 01:20:14,300 --> 01:20:17,270 ทั้งหมดที่ 'B' คำพูดที่นี่ และทั้งหมดที่ 'C' คำพูดที่นี่? 1664 01:20:17,270 --> 01:20:24,610 ดังนั้นนี้จบลงด้วยการวางแอปเปิ้ล ที่นี่ที่นี่กล้วยแคนตาลูปที่นี่ 1665 01:20:24,610 --> 01:20:25,730 เป็นต้น 1666 01:20:25,730 --> 01:20:31,700 >> และถ้าผมมีเพิ่มเติม คำ like-- สิ่งที่อื่นได้หรือไม่ 1667 01:20:31,700 --> 01:20:36,640 แอปเปิ้ล, กล้วย, ลูกแพร์ 1668 01:20:36,640 --> 01:20:39,370 ทุกคนคิดว่าผลไม้ ที่เริ่มต้นด้วย A, B, C หรือ? 1669 01:20:39,370 --> 01:20:40,570 ที่สมบูรณ์แบบ Blueberry-- 1670 01:20:40,570 --> 01:20:43,990 ที่กำลังจะจบลงที่นี่ 1671 01:20:43,990 --> 01:20:47,530 และเพื่อให้เราดูเหมือนจะมี เล็กน้อยวิธีการแก้ปัญหาที่ดีกว่า 1672 01:20:47,530 --> 01:20:50,820 เพราะตอนนี้ถ้าผมต้องการ เพื่อค้นหาแอปเปิ้ลผม 1673 01:20:50,820 --> 01:20:53,200 first-- ฉันทำไม่ได้เป็นเพียงการดำน้ำ ในโครงสร้างข้อมูลของฉัน 1674 01:20:53,200 --> 01:20:54,850 ฉันไม่ได้ดำน้ำในหน่วยความจำของคอมพิวเตอร์ของฉัน 1675 01:20:54,850 --> 01:20:56,530 ครั้งแรกที่ฉันมองไปที่ตัวอักษรตัวแรก 1676 01:20:56,530 --> 01:20:58,610 >> และนี่คือสิ่งคอมพิวเตอร์ นักวิทยาศาสตร์จะบอกว่า 1677 01:20:58,610 --> 01:21:00,760 คุณกัญชาในโครงสร้างข้อมูลของคุณ 1678 01:21:00,760 --> 01:21:04,100 คุณจะใช้การป้อนข้อมูลของคุณซึ่งใน กรณีนี้เป็นคำเช่นแอปเปิ้ล 1679 01:21:04,100 --> 01:21:07,150 คุณวิเคราะห์มันมองไปที่ ตัวอักษรตัวแรกในกรณีนี้ 1680 01:21:07,150 --> 01:21:08,340 จึง hashing มัน 1681 01:21:08,340 --> 01:21:10,950 Hashing เป็นเหตุคำทั่วไป คุณนำสิ่งที่เป็น input 1682 01:21:10,950 --> 01:21:12,116 และคุณผลิตออกบางส่วน 1683 01:21:12,116 --> 01:21:15,090 และการส่งออกในการที่ กรณีที่เป็นที่ตั้ง 1684 01:21:15,090 --> 01:21:18,150 คุณต้องการค้นหาเป็นครั้งแรก ที่ตั้งสถานที่สองสาม 1685 01:21:18,150 --> 01:21:22,160 ดังนั้นใส่เป็นแอปเปิ้ล ส่งออกเป็นครั้งแรก 1686 01:21:22,160 --> 01:21:25,054 การป้อนข้อมูลที่เป็นกล้วยที่ การส่งออกควรจะเป็นครั้งที่สอง 1687 01:21:25,054 --> 01:21:27,220 การป้อนข้อมูลที่เป็นแคนตาลูป การส่งออกที่ควรจะเป็นที่สาม 1688 01:21:27,220 --> 01:21:30,320 การป้อนข้อมูลที่เป็นบลูเบอร์รี่ที่ การส่งออกอีกครั้งควรจะเป็นครั้งที่สอง 1689 01:21:30,320 --> 01:21:34,010 และนั่นคือสิ่งที่จะช่วยให้คุณใช้เวลา ทางลัดผ่านหน่วยความจำของคุณ 1690 01:21:34,010 --> 01:21:39,050 เพื่อให้ได้คำ หรือข้อมูลมีประสิทธิภาพมากขึ้น 1691 01:21:39,050 --> 01:21:43,330 >> ตอนนี้ลดลงเวลาของเราที่อาจเกิดขึ้น โดยเท่าหนึ่งออกจาก 26 1692 01:21:43,330 --> 01:21:45,850 เพราะถ้าคุณคิดว่าคุณ มีเป็นจำนวนมาก "A" คำว่า "Z" 1693 01:21:45,850 --> 01:21:48,080 คำว่า "Q" คำพูดที่ ไม่ได้จริงๆ realistic-- 1694 01:21:48,080 --> 01:21:50,830 คุณกำลังจะมีเอียงข้าม ตัวอักษรบาง alphabet-- 1695 01:21:50,830 --> 01:21:53,204 แต่นี้จะเป็นที่เพิ่มขึ้น วิธีการที่จะช่วยให้ 1696 01:21:53,204 --> 01:21:55,930 คุณจะได้รับในคำพูดมากขึ้นอย่างรวดเร็ว 1697 01:21:55,930 --> 01:21:59,660 และในความเป็นจริงที่มีความซับซ้อน โปรแกรมที่ Googles ของโลก 1698 01:21:59,660 --> 01:22:02,180 Facebooks ของ world-- พวกเขาจะใช้ตารางแฮช 1699 01:22:02,180 --> 01:22:03,740 สำหรับจำนวนมากของวัตถุประสงค์ที่แตกต่างกัน 1700 01:22:03,740 --> 01:22:06,590 แต่พวกเขาจะไม่เป็นเช่นนั้นไร้เดียงสาเป็น เพียงแค่มองไปที่ตัวอักษรตัวแรก 1701 01:22:06,590 --> 01:22:09,700 ในแอปเปิ้ลหรือกล้วยหรือ ลูกแพร์หรือแคนตาลูป 1702 01:22:09,700 --> 01:22:13,420 เพราะในขณะที่คุณสามารถเห็นเหล่านี้ รายชื่ออาจจะยังคงได้รับความยาว 1703 01:22:13,420 --> 01:22:17,130 >> และดังนั้นนี้ยังอาจจะมีการจัดเรียง ของ linear-- เพื่อให้การจัดเรียงของช้า 1704 01:22:17,130 --> 01:22:19,980 เช่นเดียวกับโอใหญ่ของ n ที่เรากล่าวก่อนหน้านี้ 1705 01:22:19,980 --> 01:22:25,290 ดังนั้นสิ่งที่ตารางแฮชดีจริงจะ do-- มันจะมีอาร์เรย์ขนาดใหญ่มาก 1706 01:22:25,290 --> 01:22:28,574 และมันจะใช้มากขึ้น ฟังก์ชั่นแปลงแป้นพิมพ์ที่มีความซับซ้อน 1707 01:22:28,574 --> 01:22:30,240 เพื่อที่จะไม่เพียง แต่มองไปที่ "A". 1708 01:22:30,240 --> 01:22:35,480 บางทีมันอาจจะดูที่ระดับ "A-P-P-L-E" และ อย่างใดแปลงที่ห้าตัวอักษร 1709 01:22:35,480 --> 01:22:38,400 ในสถานที่ที่ แอปเปิ้ลควรจะเก็บไว้ 1710 01:22:38,400 --> 01:22:42,660 เราเพียงแค่ไร้เดียงสาโดยใช้ตัวอักษร 'a' เพียงอย่างเดียวเพราะมันเป็นเรื่องที่ดีและง่าย 1711 01:22:42,660 --> 01:22:44,600 >> แต่ตารางแฮชใน ท้ายที่สุดที่คุณสามารถคิด 1712 01:22:44,600 --> 01:22:47,270 ของการรวมกันของ อาร์เรย์แต่ละที่ 1713 01:22:47,270 --> 01:22:51,700 มีรายการที่เชื่อมโยงที่นึกคิด ควรจะเป็นสั้นที่สุด 1714 01:22:51,700 --> 01:22:54,364 และนี่คือไม่ได้เป็นทางออกที่ชัดเจน 1715 01:22:54,364 --> 01:22:57,280 ในความเป็นจริงมากของการปรับแต่ง ที่เกิดขึ้นภายใต้ประทุนเมื่อ 1716 01:22:57,280 --> 01:22:59,654 การดำเนินการเหล่านี้ชนิดของ โครงสร้างข้อมูลที่มีความซับซ้อน 1717 01:22:59,654 --> 01:23:01,640 คือสิ่งที่เป็นที่เหมาะสม ความยาวของอาร์เรย์? 1718 01:23:01,640 --> 01:23:03,250 ฟังก์ชั่นแฮชที่เหมาะสมคืออะไร? 1719 01:23:03,250 --> 01:23:04,830 คุณจะทำอย่างไรในการจัดเก็บสิ่งที่อยู่ในหน่วยความจำ? 1720 01:23:04,830 --> 01:23:07,249 >> แต่ตระหนักถึงวิธีการได้อย่างรวดเร็ว การเรียงลำดับของการสนทนานี้ 1721 01:23:07,249 --> 01:23:10,540 เพิ่มขึ้นอย่างใดอย่างหนึ่งเพื่อให้ห่างไกลว่ามันเป็นชนิด ของเหนือหัวของคนที่จุดนี้ซึ่ง 1722 01:23:10,540 --> 01:23:11,360 เป็นเรื่องปกติ 1723 01:23:11,360 --> 01:23:18,820 แต่เราเริ่มต้นการเรียกคืนด้วยอย่างแท้จริง บางสิ่งบางอย่างในระดับต่ำและอิเล็กทรอนิกส์ 1724 01:23:18,820 --> 01:23:20,819 และอื่น ๆ นี้อีกครั้งเป็นแบบนี้ รูปแบบของนามธรรม 1725 01:23:20,819 --> 01:23:23,610 ที่เมื่อคุณเริ่มต้นที่จะใช้สำหรับ รับตกลงฉันมี it-- มี 1726 01:23:23,610 --> 01:23:26,680 หน่วยความจำกายภาพตกลงได้มันทุก ตำแหน่งทางกายภาพมีอยู่ 1727 01:23:26,680 --> 01:23:29,910 ตกลงผมได้รับมันฉันสามารถเป็นตัวแทนของ ที่อยู่เหล่านั้นเป็น arrows-- 1728 01:23:29,910 --> 01:23:34,650 คุณได้อย่างรวดเร็วสามารถเริ่มต้นที่จะมี การสนทนาที่มีความซับซ้อนมากขึ้นว่า 1729 01:23:34,650 --> 01:23:38,360 ในที่สุดดูเหมือนจะช่วยให้เรา ในการแก้ปัญหาเช่นการค้นหา 1730 01:23:38,360 --> 01:23:41,620 และการเรียงลำดับได้อย่างมีประสิทธิภาพมากขึ้น 1731 01:23:41,620 --> 01:23:44,190 และส่วนที่เหลือมั่นใจ too-- เพราะผมคิดว่านี้ 1732 01:23:44,190 --> 01:23:48,700 เป็นที่ลึกที่สุดของเราได้ไปเป็นบางส่วน เหล่านี้หัวข้อ CS proper-- เราได้ 1733 01:23:48,700 --> 01:23:51,880 ทำในวันและครึ่งหนึ่งของที่นี้ ชี้สิ่งที่คุณมักจะอาจจะทำมากกว่า 1734 01:23:51,880 --> 01:23:55,520 หลักสูตรของแปดสัปดาห์ในภาคการศึกษาที่ 1735 01:23:55,520 --> 01:23:59,670 >> คำถามใด ๆ เกี่ยวกับเหล่านี้หรือไม่ 1736 01:23:59,670 --> 01:24:01,100 ไม่ได้หรือไม่ 1737 01:24:01,100 --> 01:24:01,940 ก็ดี 1738 01:24:01,940 --> 01:24:05,610 ดีทำไมเราไม่หยุดที่นั่น เริ่มต้นกลางวันไม่กี่นาทีในช่วงต้น 1739 01:24:05,610 --> 01:24:07,052 กลับมาในเวลาเพียงประมาณหนึ่งชั่วโมง? 1740 01:24:07,052 --> 01:24:08,760 และฉันจะอู้ bit กับคำถาม 1741 01:24:08,760 --> 01:24:11,343 แล้วฉันจะต้องไป ใช้สายคู่ถ้าที่ตกลง 1742 01:24:11,343 --> 01:24:15,000 ฉันจะเปิดเพลงบางอย่างในขณะเดียวกัน แต่กลางวันควรจะรอบมุม 1743 01:24:15,000 --> 01:24:17,862