1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> DAVID ลัน: ทั้งหมดขวา 3 00:00:12,250 --> 00:00:13,860 ยินดีต้อนรับกลับไป CS50 4 00:00:13,860 --> 00:00:16,190 นี่คือจุดเริ่มต้นของสัปดาห์ที่ 8 5 00:00:16,190 --> 00:00:21,320 และจำชุดปัญหาที่สิ้นสุดวันที่ 5 กับเล็กน้อยของความท้าทาย 6 00:00:21,320 --> 00:00:25,210 ดังนั้นสมมติว่าคุณกู้คืนทั้งหมดของคุณ Fellows การเรียนการสอนและรูปถ่ายของ CA 7 00:00:25,210 --> 00:00:30,480 ในแฟ้ม card.raw, คุณมีสิทธิ์ ถึงตอนนี้ค้นหาทั้งหมดของคนเหล่านั้นและ 8 00:00:30,480 --> 00:00:34,510 หนึ่งในผู้โชคดีจะเดินกลับบ้านด้วย สิ่งเหล่านี้เคลื่อนไหวก้าวกระโดด 9 00:00:34,510 --> 00:00:37,450 อุปกรณ์ที่คุณสามารถใช้สำหรับสุดท้าย โครงการตัวอย่างเช่น 10 00:00:37,450 --> 00:00:39,860 >> นี้ทุกปีจะนำไปสู่ บิตของความน่าขยะแขยง 11 00:00:39,860 --> 00:00:43,480 และดังนั้นสิ่งที่ฉันคิดว่าฉันควรจะทำร่วมกันคือ กับคุณบางส่วนของบันทึกที่มี 12 00:00:43,480 --> 00:00:47,370 ไปและกลับออกไป รายการพนักงานของสาย 13 00:00:47,370 --> 00:00:51,110 ตัวอย่างเช่นเพียงแค่คืนที่ผ่านมาอ้าง ไม่ได้นำมาอ้างจากหนึ่งของพนักงาน 14 00:00:51,110 --> 00:00:55,000 สมาชิก, "ฉันเพิ่งมีการเคาะนักเรียน ประตูของฉันไปถ่ายรูปกับผม 15 00:00:55,000 --> 00:00:59,020 Stalkers ผมบอกคุณ. "เริ่มออก ธรรมบรรยายและจากนั้นเราก็ย้าย 16 00:00:59,020 --> 00:01:02,830 เมื่อถึงชั่วโมงหรือดังนั้นต่อมา "ผมมี นักเรียนรอฉันหลังจากที่ส่วน 17 00:01:02,830 --> 00:01:06,080 และเขาก็มีทั้งหมดของชื่อและภาพถ่ายของเรา เมื่อแผ่นบางของกระดาษ. "ทุกขวา 18 00:01:06,080 --> 00:01:09,230 ดังนั้นการจัดระเบียบ แต่ไม่ ทั้งหมดที่ยังน่าขนลุก 19 00:01:09,230 --> 00:01:12,520 >> จากนั้น "ฉันออกไปจากเมืองวันหยุดสุดสัปดาห์นี้ และเมื่อฉันได้กลับมามีเป็นหนึ่งใน 20 00:01:12,520 --> 00:01:12,630 ของฉัน 21 00:01:12,630 --> 00:01:16,740 ห้องนอน. "[เสียงหัวเราะ] 22 00:01:16,740 --> 00:01:20,410 DAVID ลัน: อ้างถัดไปจากเจ้าหน้าที่ ของสมาชิก "นักเรียนมาที่บ้านของฉันที่ 23 00:01:20,410 --> 00:01:25,330 ซอเมอร์ที่ 04:00 เช้านี้. เลือก "Next พนักงาน "ผมได้ไปที่โรงแรมของฉันในซาน 24 00:01:25,330 --> 00:01:30,016 ฟรานซิสและนักเรียนกำลังรอ เราได้ที่ล็อบบี้กับสาม DSLRs. " 25 00:01:30,016 --> 00:01:31,510 ประเภทของกล้อง 26 00:01:31,510 --> 00:01:34,980 "ผมไม่ได้อยู่ในทีมงานภาคการศึกษานี้ แต่นักเรียนบุกเข้าไปในบ้านของฉัน 27 00:01:34,980 --> 00:01:40,480 ตอนเช้าและบันทึกสิ่งที่ทั้ง กับแก้ว Google. "และแล้วในที่สุด 28 00:01:40,480 --> 00:01:43,650 "อย่างน้อย 12 คนกระหาย รอสำหรับฉันเมื่อฉันได้ออกจากฉัน 29 00:01:43,650 --> 00:01:44,800 รถลีมูซีนและแล้วฉัน 30 00:01:44,800 --> 00:01:46,970 ตื่นขึ้นมา. "ทุกขวา 31 00:01:46,970 --> 00:01:57,690 ดังนั้นระหว่างการถ่ายภาพตามที่คุณอาจ จำคนนี้อยู่ที่นี่ที่คุณ 32 00:01:57,690 --> 00:02:01,850 อาจจะรู้ว่าเป็นไมโลกล้วยที่มีชีวิตอยู่ กับลอเรนวัลโญ่หัวของเรา 33 00:02:01,850 --> 00:02:02,905 เพื่อนการเรียนการสอน 34 00:02:02,905 --> 00:02:05,170 ไมโลไมโลมาที่นี่เด็ก 35 00:02:05,170 --> 00:02:06,320 ไมโล 36 00:02:06,320 --> 00:02:08,650 ไมโล 37 00:02:08,650 --> 00:02:12,230 ใจคุณเขาสวมใส่ Google แก้วดังนั้น เราจะแสดงให้คุณทั้งหมดนี้หลังจาก 38 00:02:12,230 --> 00:02:16,190 ดังนั้นนี่คือไมโลถ้าคุณต้องการที่จะ ถ่ายรูปกับเขาหลังจากนั้น 39 00:02:16,190 --> 00:02:18,240 หากคุณต้องการที่จะดูออก ที่ผู้ชมมี 40 00:02:18,240 --> 00:02:19,430 ตกลง 41 00:02:19,430 --> 00:02:20,200 นั่นเป็นภาพที่ดี 42 00:02:20,200 --> 00:02:22,556 ดีกล้วยไมโล 43 00:02:22,556 --> 00:02:23,941 โอ้ไม่ทำอย่างนั้น 44 00:02:23,941 --> 00:02:29,020 >> [เสียงหัวเราะ] 45 00:02:29,020 --> 00:02:29,470 >> ตกลง 46 00:02:29,470 --> 00:02:34,550 ดังนั้นคำแล้วกับสิ่งที่อยู่ข้างหน้า เพราะในขณะที่เราเริ่มต้นที่จะเปลี่ยนแปลง 47 00:02:34,550 --> 00:02:38,410 สัปดาห์โดยเฉพาะจาก C ในนี้ สภาพแวดล้อมที่บรรทัดคำสั่งเพื่อ PHP และ 48 00:02:38,410 --> 00:02:42,720 JavaScript และ SQL และ HTML และ CSS ใน สภาพแวดล้อมบนเว็บเราจะ 49 00:02:42,720 --> 00:02:44,490 เตรียมให้คุณกับ ความรู้ที่มากขึ้นสำหรับ 50 00:02:44,490 --> 00:02:46,010 โครงการสุดท้ายที่มีศักยภาพ 51 00:02:46,010 --> 00:02:49,240 ไปยังจุดสิ้นสุดที่แน่นอนมี ประเพณีของผู้ถือหุ้นซึ่งการสัมมนา 52 00:02:49,240 --> 00:02:50,950 เป็นหัวข้อที่วง เพื่อการเรียนการสอน 53 00:02:50,950 --> 00:02:54,330 ที่เกี่ยวข้องเป็นอย่างมากในการเขียนโปรแกรมและการ การพัฒนา App และอื่น ๆ แต่ 54 00:02:54,330 --> 00:02:57,010 ไม่จำเป็นต้องสำรวจโดย หลักสูตรของตัวเองของหลักสูตร 55 00:02:57,010 --> 00:03:00,250 >> ดังนั้นหากคุณอาจจะสนใจในการอย่างใดอย่างหนึ่ง หรือมากกว่าของการสัมมนาในปีนี้ 56 00:03:00,250 --> 00:03:02,530 ลงทะเบียนที่ cs50.net/seminar 57 00:03:02,530 --> 00:03:06,170 มีการจัดสัมมนาเก่า ที่ cs50.net/seminars 58 00:03:06,170 --> 00:03:10,620 และบัญชีรายชื่อป่านนี้ปีนี้ ซอฟแวร์เว็บที่น่าตื่นตาตื่นใจกับทับทิมอยู่บน 59 00:03:10,620 --> 00:03:13,580 ทางรถไฟซึ่งเป็นทางเลือก ภาษา PHP 60 00:03:13,580 --> 00:03:14,900 ภาษาศาสตร์ 61 00:03:14,900 --> 00:03:18,710 รู้เบื้องต้นเกี่ยวกับ iOS ซึ่งเป็น แพลตฟอร์มที่ใช้สำหรับ iPhone และ 62 00:03:18,710 --> 00:03:19,850 การพัฒนา iPad 63 00:03:19,850 --> 00:03:22,890 JavaScript สำหรับ Web Apps ของเราจะครอบคลุม แต่ในการสัมมนาครั้งนี้คุณจะไป 64 00:03:22,890 --> 00:03:24,070 มีรายละเอียดเพิ่มเติม 65 00:03:24,070 --> 00:03:27,390 >> Leap เคลื่อนไหวดังนั้นเราจริงจะมีบางส่วน เพื่อนของเราจากภาพยนตร์ Leap, 66 00:03:27,390 --> 00:03:29,160 บริษัท ของตัวเองเข้าร่วมกับเรา 67 00:03:29,160 --> 00:03:31,800 พรุ่งนี้ในความเป็นจริงเพื่อให้ มือบนสัมมนาถ้า 68 00:03:31,800 --> 00:03:33,320 ที่สนใจของคุณ 69 00:03:33,320 --> 00:03:38,770 Meteor.js, เทคนิคทางเลือกสำหรับ ใช้ JavaScript ไม่ได้อยู่ในเบราว์เซอร์, 70 00:03:38,770 --> 00:03:39,970 แต่บนเซิร์ฟเวอร์ 71 00:03:39,970 --> 00:03:42,110 Node.js ซึ่งเป็นอย่างมาก ในหลอดเลือดดำด้วยเช่นกันว่า 72 00:03:42,110 --> 00:03:43,650 การออกแบบหุ่นยนต์รูปแบบเพรียวบาง 73 00:03:43,650 --> 00:03:46,990 Android เป็นทางเลือกที่นิยมมาก ไปยังโทรศัพท์มือ iOS และ Windows 74 00:03:46,990 --> 00:03:48,790 และแพลตฟอร์มมือถืออื่น ๆ 75 00:03:48,790 --> 00:03:51,180 และ Web งานรักษาความปลอดภัยกลาโหม 76 00:03:51,180 --> 00:03:54,590 >> ดังนั้นในความเป็นจริงถ้าคุณต้องการ จะมีส่วนร่วมในเรื่องนี้ให้ฉัน 77 00:03:54,590 --> 00:03:55,840 ให้จดบันทึกนี้ 78 00:03:55,840 --> 00:03:57,790 เรามีความสุขมากที่จะบอกว่า เพื่อนของเราที่ก้าวกระโดด 79 00:03:57,790 --> 00:03:59,140 การเคลื่อนไหวซึ่งเป็นการเริ่มต้น - 80 00:03:59,140 --> 00:04:01,300 อุปกรณ์นี้จริงๆเพียงแค่เข้ามา ออกไม่กี่เดือนที่ผ่านมา - 81 00:04:01,300 --> 00:04:05,960 ได้บริจาคพระกรุณ​​าโปรดเกล้าฯ 30 อุปกรณ์ดังกล่าว ในชั้นเรียนเพื่อเป็นนักเรียนหลายคนถ้า 82 00:04:05,960 --> 00:04:08,670 คุณต้องการยืมฮาร์ดแวร์ ไปยังจุดสิ้นสุดภาคการศึกษาและใช้งานได้ 83 00:04:08,670 --> 00:04:10,390 โครงการสุดท้ายที่เกิดขึ้นจริง 84 00:04:10,390 --> 00:04:11,890 พวกเขาสนับสนุนหลายภาษา 85 00:04:11,890 --> 00:04:16,040 ไม่มีพวกเขา C ไม่มีของพวกเขา PHP ดังนั้น ตระหนักถึงหนึ่งหรือมากกว่าหนึ่งของการสัมมนาเหล่านี้ 86 00:04:16,040 --> 00:04:16,899 อาจพิสูจน์ที่น่าสนใจ 87 00:04:16,899 --> 00:04:19,730 และทั้งหมดของพวกเขาจะได้รับการถ่ายทำใน กรณีที่คุณไม่สามารถ 88 00:04:19,730 --> 00:04:21,380 ที่จะเข้าร่วมในบุคคล 89 00:04:21,380 --> 00:04:25,000 ตารางเวลาการประกาศผ่านทาง อีเมล์ที่เราแข็งห้องพัก 90 00:04:25,000 --> 00:04:28,460 >> และสุดท้ายถ้าคุณไปที่ projects.cs.50.net นี้เป็นเว็บไซต์ 91 00:04:28,460 --> 00:04:31,450 เรารักษาในแต่ละปีที่เราเชิญ folks จากชุมชนของอาจารย์ 92 00:04:31,450 --> 00:04:36,420 แผนกพนักงานและทั้งสอง ในด้านนอกของ CS50 ไป 93 00:04:36,420 --> 00:04:37,730 เสนอความคิดโครงการ 94 00:04:37,730 --> 00:04:39,050 กิจกรรมที่น่าสนใจให้กับกลุ่มนักเรียน 95 00:04:39,050 --> 00:04:40,600 สถานที่น่าสนใจให้กับหน่วยงาน 96 00:04:40,600 --> 00:04:43,990 ดังนั้นจะเปิดมีถ้าคุณกำลังดิ้นรน ที่มีความไม่แน่นอนเป็นสิ่งที่คุณ 97 00:04:43,990 --> 00:04:46,700 ตัวเองต้องการที่จะแก้ไขปัญหา 98 00:04:46,700 --> 00:04:51,760 >> ดังนั้นครั้งสุดท้ายที่เรานำเนื้อหา โครงสร้างข้อมูลที่ซับซ้อนมากขึ้นกว่าที่เราต้องการ 99 00:04:51,760 --> 00:04:53,300 มองเห็นได้ในสัปดาห์ที่ผ่านมา 100 00:04:53,300 --> 00:04:56,550 เราต้องการได้รับการใช้อาร์เรย์สวย อย่างมีความสุขเป็นประโยชน์ในกรณีที่ 101 00:04:56,550 --> 00:04:58,160 โครงสร้างข้อมูลแบบง่ายๆ 102 00:04:58,160 --> 00:05:00,570 จากนั้นเราก็นำเหล่านี้ซึ่ง แน่นอนมีการเชื่อมโยงรายการ 103 00:05:00,570 --> 00:05:05,470 และสิ่งที่เป็นหนึ่งในแรงจูงใจสำหรับ การแนะนำนี้โครงสร้างข้อมูล? 104 00:05:05,470 --> 00:05:06,930 อ้าง? 105 00:05:06,930 --> 00:05:07,250 ว่าคืออะไร? 106 00:05:07,250 --> 00:05:08,080 >> ผู้ชม: Dynamic ขนาด 107 00:05:08,080 --> 00:05:09,040 >> DAVID ลัน: Dynamic ขนาด 108 00:05:09,040 --> 00:05:11,890 ดังนั้นในขณะที่อยู่ในอาร์เรย์คุณต้อง ทราบขนาดล่วงหน้าเมื่อมัน 109 00:05:11,890 --> 00:05:12,740 คุณจัดสรรมัน 110 00:05:12,740 --> 00:05:14,380 ในรายการการเชื่อมโยงที่คุณทำไม่ได้ ต้องรู้ว่า 111 00:05:14,380 --> 00:05:17,610 คุณสามารถ malloc เพียงหรือมากกว่าปกติ จัดสรรเพิ่มเติม 112 00:05:17,610 --> 00:05:20,720 โหนดเพื่อที่จะพูดทุกครั้งที่คุณใด ๆ ต้องการแทรกข้อมูลได้มากขึ้น 113 00:05:20,720 --> 00:05:22,670 และโหนดได้กำหนดไว้ไม่มีความหมาย 114 00:05:22,670 --> 00:05:25,580 มันก็แค่เป็นคำทั่วไปที่อธิบาย บางชนิดของภาชนะว่าเรา 115 00:05:25,580 --> 00:05:29,610 ใช้ในโครงสร้างข้อมูลของเราในการจัดเก็บ รายการที่น่าสนใจบางอย่างซึ่งในเรื่องนี้ 116 00:05:29,610 --> 00:05:31,750 กรณีที่เกิดขึ้นจะเป็นจำนวนเต็ม 117 00:05:31,750 --> 00:05:33,160 >> แต่มีเสมอ tradeoff 118 00:05:33,160 --> 00:05:38,070 ดังนั้นเราจึงได้รับขนาดของข้อมูลแบบไดนามิก โครงสร้าง แต่สิ่งที่ราคาที่เราจ่ายเงิน 119 00:05:38,070 --> 00:05:40,040 ข้อเสียของรายการที่เชื่อมโยงคืออะไร? 120 00:05:40,040 --> 00:05:41,006 อ้าง? 121 00:05:41,006 --> 00:05:41,980 >> ผู้ชม: ต้องหน่วยความจำเพิ่มเติม 122 00:05:41,980 --> 00:05:44,240 >> DAVID ลัน: มันต้องมีมากขึ้น หน่วยความจำวิธีการว่า? 123 00:05:44,240 --> 00:05:46,440 >> ผู้ชม: [ได้ยิน] 124 00:05:46,440 --> 00:05:47,050 >> DAVID ลัน: ว่า 125 00:05:47,050 --> 00:05:50,460 ดังนั้นตอนนี้เรามีตัวชี้การขึ้น หน่วยความจำเพิ่มเติมที่เราก่อนหน้านี้ 126 00:05:50,460 --> 00:05:53,040 ไม่จำเป็นเพราะความได้เปรียบ ของอาร์เรย์ของหลักสูตรคือ 127 00:05:53,040 --> 00:05:54,860 ทุกอย่างที่ต่อเนื่องกันกลับ ที่จะกลับไปทางด้านหลังซึ่ง 128 00:05:54,860 --> 00:05:56,380 จะช่วยให้คุณเข้าถึงโดยสุ่ม 129 00:05:56,380 --> 00:06:00,710 เพราะเพียงโดยใช้วงเล็บเหลี่ยม ตัวชี้สัญกรณ์หรือมากกว่าในทางเทคนิค 130 00:06:00,710 --> 00:06:03,580 คณิตศาสตร์นอกจากนี้ง่ายมาก คุณสามารถเข้าถึงใด ๆ 131 00:06:03,580 --> 00:06:05,700 องค์ประกอบในเวลาคง 132 00:06:05,700 --> 00:06:08,975 และในความเป็นจริงที่ว่าชนิดของเค้า ราคาที่เราจ่ายเงินให้กับคนอื่น 133 00:06:08,975 --> 00:06:09,760 รายการที่เชื่อมโยง 134 00:06:09,760 --> 00:06:13,890 >> ที่เกิดขึ้นกับเวลาทำงานของอะไร สิ่งที่ต้องการค้นหาถ้าฉันต้องการ 135 00:06:13,890 --> 00:06:17,270 หาค่าบางและภายใน ของรายการที่เชื่อมโยง? 136 00:06:17,270 --> 00:06:20,290 เวลาการทำงานของฉันจะกลายเป็นอะไร? 137 00:06:20,290 --> 00:06:21,560 O ใหญ่ของ n 138 00:06:21,560 --> 00:06:24,060 ถ้ามันจัดเรียง? 139 00:06:24,060 --> 00:06:25,440 เกิดอะไรขึ้นถ้าโครงสร้างข้อมูลที่เรียง? 140 00:06:25,440 --> 00:06:28,640 ผมสามารถทำได้ดีกว่าขนาดใหญ่ ของ O n สำหรับการค้นหา 141 00:06:28,640 --> 00:06:31,700 ไม่มีเพราะในกรณีที่เลวร้ายที่สุดก็อาจ เป็นอย่างดีและสามารถจัดเรียง แต่จำนวน 142 00:06:31,700 --> 00:06:32,950 คุณกำลังมองหาอาจจะมีขนาดใหญ่ 143 00:06:32,950 --> 00:06:35,370 มันอาจจะมีจำนวน 100 ซึ่ง อาจจะเกิดขึ้นทั้งหมด 144 00:06:35,370 --> 00:06:36,410 วิธีที่สิ้นสุด 145 00:06:36,410 --> 00:06:39,950 และเนื่องจากคุณจะสามารถเข้าถึงการเชื่อมโยง รายการในการดำเนินการนี​​้โดย 146 00:06:39,950 --> 00:06:42,690 วิธีการของโหนดแรกของคุณ ชนิดยังคงออกจากโชค 147 00:06:42,690 --> 00:06:47,450 คุณจะต้องเข้าไปในสิ่งที่ทั้ง ตั้งแต่แรกที่จะผ่านมาเพื่อหาสิ่งที่ 148 00:06:47,450 --> 00:06:49,150 ว่าค่าขนาดใหญ่เช่น 100 149 00:06:49,150 --> 00:06:51,350 หรือตรวจสอบว่าเป็น ไม่ได้มี 150 00:06:51,350 --> 00:06:55,960 >> ดังนั้นเราจึงไม่สามารถทำในสิ่งที่อัลกอริทึมในข้อมูล โครงสร้างที่มีลักษณะเช่นนี้หรือไม่ 151 00:06:55,960 --> 00:06:59,460 เราไม่สามารถทำการค้นหาแบบไบนารีเพราะ การค้นหาแบบไบนารีจำเป็นที่เรามี 152 00:06:59,460 --> 00:07:00,740 เข้าถึงโดยสุ่ม 153 00:07:00,740 --> 00:07:04,500 เราก็สามารถกระโดดจากที่ตั้งไป สถานที่โดยไม่ต้องปฏิบัติตาม 154 00:07:04,500 --> 00:07:07,080 เหล่านี้ขนมปังในรูปแบบ ของตัวชี้เหล่านี้ทั้งหมด 155 00:07:07,080 --> 00:07:08,300 >> ตอนนี้เราไม่ใช้วิธีนี้ 156 00:07:08,300 --> 00:07:12,830 ดีถ้าเราไปที่หน้าจอนี่ถ้า เราได้อย่างรวดเร็วสามารถ reimplement ข้อมูลนี้ 157 00:07:12,830 --> 00:07:13,440 โครงสร้าง - 158 00:07:13,440 --> 00:07:15,670 เขียนด้วยลายมือของฉันไม่ทั้งหมดที่ ดีที่นี่ แต่เราจะพยายาม 159 00:07:15,670 --> 00:07:22,030 typedef struct ดังนั้นและสิ่งที่ไม่ฉัน ต้องการที่จะเรียกสิ่งนี้ขึ้นที่นี่? 160 00:07:22,030 --> 00:07:22,960 ตุ่ม 161 00:07:22,960 --> 00:07:24,580 ดังนั้นผมจึงจะได้รับเราเริ่ม 162 00:07:24,580 --> 00:07:27,860 และตอนนี้จำเป็นต้องอยู่ภายในของสิ่งที่ โครงสร้างข้อมูลสำหรับลำพังว่า 163 00:07:27,860 --> 00:07:28,430 เชื่อมโยงรายการ? 164 00:07:28,430 --> 00:07:29,950 วิธีการหลายสาขา? 165 00:07:29,950 --> 00:07:30,450 >> ดังนั้นสอง 166 00:07:30,450 --> 00:07:31,570 หนึ่งเป็นเรื่องง่ายสวย 167 00:07:31,570 --> 00:07:33,050 int ดังนั้น n 168 00:07:33,050 --> 00:07:35,930 และเราสามารถเรียกสิ่งที่ n ที่เราต้องการ แต่ควรจะ int ถ้าเรา 169 00:07:35,930 --> 00:07:37,660 การดำเนินการรายการที่เชื่อมโยงสำหรับ ints 170 00:07:37,660 --> 00:07:41,920 และตอนนี้ไม่สองสิ่ง สนามจะต้องมี? 171 00:07:41,920 --> 00:07:43,460 struct โหนด * 172 00:07:43,460 --> 00:07:50,570 ดังนั้นถ้าฉันทำโหนด struct * และแล้วฉัน สามารถโทรนี้สิ่งที่ฉันต้องการ, 173 00:07:50,570 --> 00:07:53,510 แต่เพียงเพื่อให้มีความชัดเจนฉันจะเรียก มันต่อไปในขณะที่เราได้รับการทำ 174 00:07:53,510 --> 00:07:55,270 และแล้วฉันจะปิดวงเล็บปีกกาของฉัน 175 00:07:55,270 --> 00:08:00,700 >> และตอนนี้เป็นเวลาที่ผ่านมา ฉันใส่โหนดลงที่นี่ 176 00:08:00,700 --> 00:08:03,830 แต่ถ้าฉันประกาศนี้เป็น โหนดผมไม่รำคาญเป็นดังนั้นทำไม 177 00:08:03,830 --> 00:08:07,320 verbose ที่นี่ในประกาศ struct โหนดต่อไปเมื่อเทียบกับ 178 00:08:07,320 --> 00:08:09,210 เพียง * โหนดต่อไปหรือไม่ 179 00:08:09,210 --> 00:08:09,904 อ้าง? 180 00:08:09,904 --> 00:08:12,810 >> ผู้ชม: [ได้ยิน] 181 00:08:12,810 --> 00:08:14,050 >> DAVID ลัน: ว่า 182 00:08:14,050 --> 00:08:14,530 อย่างแน่นอน 183 00:08:14,530 --> 00:08:18,320 C เพราะจริงๆจะคุณอย่างแท้จริงและ เพียง แต่เห็นความหมายของโหนด 184 00:08:18,320 --> 00:08:21,230 ทางลงที่นี่คุณจะไม่สามารถ หมายถึงมันขึ้นมาที่นี่ 185 00:08:21,230 --> 00:08:24,760 ดังนั้นเราจึงมีการจัดเรียงของมาตรการนี​​้ ประกาศที่นี่ซึ่งเป็นที่ยอมรับ 186 00:08:24,760 --> 00:08:25,390 verbose เพิ่มเติม 187 00:08:25,390 --> 00:08:27,810 struct โหนดนั่นหมายความว่า ตอนนี้เราสามารถเข้าถึงได้ 188 00:08:27,810 --> 00:08:29,760 ภายในของโครงสร้างข้อมูล 189 00:08:29,760 --> 00:08:33,370 >> และเป็นกันเพราะนี้เป็น กลายเป็นเล็ก ๆ น้อย ๆ ส่วนตัวมากกว่าตอนนี้ 190 00:08:33,370 --> 00:08:36,230 ดาวในทางเทคนิคสามารถไปที่นี่ ที่จะสามารถไปที่นี่ก็สามารถ 191 00:08:36,230 --> 00:08:37,179 ได้ไปอยู่ตรงกลาง 192 00:08:37,179 --> 00:08:39,890 เราได้นำมาใช้ในรูปแบบคู่มือสำหรับ การเรียนการสอนการประชุมของการวาง 193 00:08:39,890 --> 00:08:42,299 ดาวทางขวาถัดจากข้อมูล ประเภทซึ่งในกรณีนี้ 194 00:08:42,299 --> 00:08:43,460 จะเป็นโหนด struct 195 00:08:43,460 --> 00:08:46,620 แต่ตระหนักในหลายตำราและ อ้างอิงออนไลน์คุณอาจแน่นอน 196 00:08:46,620 --> 00:08:48,450 เห็นมันในด้านอื่น ๆ 197 00:08:48,450 --> 00:08:52,200 แต่ก็ตระหนักดีว่าทั้งสองจะจริง การทำงานและคุณก็ควรจะเป็น 198 00:08:52,200 --> 00:08:52,970 คงเส้นคงวา 199 00:08:52,970 --> 00:08:53,580 >> ทั้งหมดขวา 200 00:08:53,580 --> 00:08:55,630 เพื่อให้การประกาศของเรา ของโหนด struct 201 00:08:55,630 --> 00:08:59,430 แต่แล้วเราเริ่มต้นการทำมากขึ้น สิ่งที่มีความซับซ้อน 202 00:08:59,430 --> 00:09:03,410 ตัวอย่างเช่นเราตัดสินใจที่จะนำ สิ่งที่ต้องการตารางแฮช 203 00:09:03,410 --> 00:09:08,160 ดังนั้นที่นี่ของตารางแฮชขนาด n คือ การจัดทำดัชนีจาก 0 ด้านบนซ้ายถึง n 204 00:09:08,160 --> 00:09:09,690 ลบ 1 ที่ด้านล่างซ้าย 205 00:09:09,690 --> 00:09:11,640 ซึ่งอาจเป็นกัญชา ตารางอะไร 206 00:09:11,640 --> 00:09:15,340 แต่สิ่งที่เราไม่ชนิดของสิ่งที่พูดคุย เกี่ยวกับการใช้ตารางแฮชหรือไม่? 207 00:09:15,340 --> 00:09:18,370 การจัดเก็บอะไร 208 00:09:18,370 --> 00:09:18,800 >> ชื่อ 209 00:09:18,800 --> 00:09:20,870 เราสามารถทำอะไรได้ชื่อเช่น ที่เราทำครั้งสุดท้าย 210 00:09:20,870 --> 00:09:22,200 และจริงๆคุณสามารถเก็บสิ่งใด 211 00:09:22,200 --> 00:09:24,640 และเราจะเห็นสิ่งนี้อีกครั้งใน PHP และใน JavaScript 212 00:09:24,640 --> 00:09:28,550 ตารางแฮชเป็นประเภทที่ดีของสวิส มีดทหารที่ช่วยให้คุณในการจัดเก็บ 213 00:09:28,550 --> 00:09:33,690 สวยมากสิ่งที่คุณต้องการภายในของ มันโดยการเชื่อมโยงคีย์ที่มีค่า 214 00:09:33,690 --> 00:09:34,770 คีย์ที่มีค่า 215 00:09:34,770 --> 00:09:37,800 >> ขณะนี้ในกรณีแบบนี้ของเรา คีย์เป็นเพียงตัวเลข 216 00:09:37,800 --> 00:09:40,380 เรากำลังดำเนินการกัญชา ตารางเป็นแถว 217 00:09:40,380 --> 00:09:43,500 และเพื่อให้คีย์เป็น 0, 1, 2, และอื่น ๆ 218 00:09:43,500 --> 00:09:47,200 และเพื่อให้เราเป็นมนุษย์ตัดสินใจล่าสุด สัปดาห์นี้คุณรู้ว่าถ้าเราไม่ 219 00:09:47,200 --> 00:09:50,410 ไปชื่อร้านให้เพียง โดยพลการ แต่สวยพอสมควร 220 00:09:50,410 --> 00:09:54,680 สมมติว่าอลิซ, ชื่อ, จะเพิ่งจะจัดทำดัชนีเป็น 0 221 00:09:54,680 --> 00:09:58,030 และ Bob ชื่อ B, จะได้รับการจัดทำดัชนี เป็น 1 และอื่น ๆ 222 00:09:58,030 --> 00:10:02,490 ดังนั้นเราจึงมีการทำแผนที่ระหว่างปัจจัยการผลิต, ซึ่งเป็นสตริงและกัญชา 223 00:10:02,490 --> 00:10:04,560 สถานที่ที่เป็นตัวเลข 224 00:10:04,560 --> 00:10:07,740 >> ดังนั้นกระบวนการที่เป็นที่รู้จักกันโดยทั่วไปว่า ฟังก์ชันแฮชและคุณสามารถอย่างแท้จริง 225 00:10:07,740 --> 00:10:09,130 ใช้มันในรหัส 226 00:10:09,130 --> 00:10:12,080 ถ้าผมต้องการที่จะใช้ฟังก์ชันแฮช ที่ไม่ตรงกับสิ่งที่เรา 227 00:10:12,080 --> 00:10:17,070 เพียงแค่อธิบายจากครั้งสุดท้ายที่ฉันอาจ ประกาศฟังก์ชันที่ใช้เป็น 228 00:10:17,070 --> 00:10:18,330 อินพุทเช่น - 229 00:10:18,330 --> 00:10:22,190 และขอทำเช่นนี้เกี่ยวกับเรื่องนี้ หน้าจอกว่าที่นี่ 230 00:10:22,190 --> 00:10:26,180 ถ้าผมต้องการที่จะใช้กัญชา ฟังก์ชั่นผมอาจจะบอกว่า 231 00:10:26,180 --> 00:10:27,410 บางอย่างเช่นนี้ 232 00:10:27,410 --> 00:10:29,030 >> มันจะกลับ int 233 00:10:29,030 --> 00:10:33,600 มันจะถูกเรียกว่ากัญชาและก็ จะไปรับเป็นอาร์กิวเมนต์ 234 00:10:33,600 --> 00:10:38,920 สตริงหรือเราสามารถที่เหมาะสมขึ้นในขณะนี้, และพูดว่า char * เราจะเรียกมัน 235 00:10:38,920 --> 00:10:43,840 และแล้วสิ่งที่ฟังก์ชั่นนี้จะทำอย่างไร, ในท้ายที่สุดก็จะกลับ int 236 00:10:43,840 --> 00:10:45,990 ตอนนี้มันไม่ที่อาจ ไม่ได้มีความชัดเจนดังนั้น 237 00:10:45,990 --> 00:10:49,510 ฉันจะดำเนินการนี​​้โดยไม่ต้องมี รูปแบบของการตรวจสอบข้อผิดพลาดได้ในขณะนี้ 238 00:10:49,510 --> 00:10:55,740 ฉันแค่จะไปสุ่มสี่สุ่มห้าพูดกลับ สิ่งที่อยู่ในวงเล็บ s 0, ลบ, 239 00:10:55,740 --> 00:10:58,850 สมมติว่าเป็นเมืองหลวงอัฒภาค 240 00:10:58,850 --> 00:10:59,960 >> เสียโดยสิ้นเชิง 241 00:10:59,960 --> 00:11:02,620 มันไม่สมบูรณ์เพราะ หนึ่งถ้าสิ่งที่เป็นโมฆะ? 242 00:11:02,620 --> 00:11:04,000 สิ่งเลวร้ายที่กำลังจะเกิดขึ้น 243 00:11:04,000 --> 00:11:07,940 สองสิ่งที่ถ้าตัวอักษรตัวแรกในเรื่องนี้ ชื่อไม่ได้เป็นตัวอักษร? 244 00:11:07,940 --> 00:11:09,860 ที่ไม่ได้ไปเปิด ออกมาได้ดีอย่างใดอย่างหนึ่ง 245 00:11:09,860 --> 00:11:11,970 มันอาจจะเป็นอักษรตัวพิมพ์เล็ก หรือไม่ตัวอักษรที่ 246 00:11:11,970 --> 00:11:15,520 ห้องพักทั้งหมดดังนั้นสำหรับการปรับปรุงที่นี่ แต่นี้เป็นแนวคิดพื้นฐาน 247 00:11:15,520 --> 00:11:19,010 >> สิ่งที่เราอธิบายสัปดาห์สุดท้ายด้วยวาจาเป็น เพียงกระบวนการของการทำแผนที่อลิซ 248 00:11:19,010 --> 00:11:23,360 และบ๊อบ 0 ถึง 1 สามารถแสดง แน่นอนมาก formulaically เป็น C 249 00:11:23,360 --> 00:11:24,320 ทำงานที่นี่ 250 00:11:24,320 --> 00:11:28,630 ที่เรียกว่ากัญชาอีกครั้งใช้เวลาเป็นสตริง การป้อนข้อมูลและจากนั้นก็ไม่มีอะไร 251 00:11:28,630 --> 00:11:31,020 กับข้อมูลการผลิตการส่งออกที่ 252 00:11:31,020 --> 00:11:34,130 ไม่แตกต่างจากคำอธิบายของเรากล่องสีดำ ที่เราได้ทำมานาน 253 00:11:34,130 --> 00:11:36,550 ผมไม่ทราบว่าวิธีการนี​​้อาจจะมี ทำงานภายใต้ประทุน 254 00:11:36,550 --> 00:11:40,120 >> สำหรับปัญหาชุดที่ 6 หนึ่งในความท้าทาย สำหรับคุณที่จะตัดสินใจว่า 255 00:11:40,120 --> 00:11:41,920 ฟังก์ชันแฮชของคุณจะเป็นอย่างไร 256 00:11:41,920 --> 00:11:45,760 สิ่งที่จะเป็นด้านในของสีดำที่ กล่องและสันนิษฐานว่ามันจะ 257 00:11:45,760 --> 00:11:50,380 เล็ก ๆ น้อย ๆ ที่น่าสนใจกว่านี้และ แน่นอนมากขึ้นมีแนวโน้มที่จะเกิดข้อผิดพลาด 258 00:11:50,380 --> 00:11:53,180 การตรวจสอบกว่านี้โดยเฉพาะ การดำเนินงาน 259 00:11:53,180 --> 00:11:54,580 >> แต่ปัญหาจะเกิดขึ้นใช่มั้ย? 260 00:11:54,580 --> 00:11:57,760 ถ้าเรามีโครงสร้างข้อมูลเช่นนี้ หนึ่งสิ่งที่หนึ่งของปัญหา 261 00:11:57,760 --> 00:12:01,600 คุณสามารถเรียกใช้ในช่วงเวลาที่คุณใส่ ชื่อมากขึ้นใน 262 00:12:01,600 --> 00:12:02,880 ตารางแฮช? 263 00:12:02,880 --> 00:12:04,630 คุณจะได้รับการชนกันใช่มั้ย? 264 00:12:04,630 --> 00:12:07,560 เกิดอะไรขึ้นถ้าคุณมีอลิซและแอรอน คนสองคนที่มีรายชื่อที่เกิดขึ้น 265 00:12:07,560 --> 00:12:08,190 จะเริ่มต้นด้วย? 266 00:12:08,190 --> 00:12:11,660 ที่ begs คำถามที่คุณ ใส่ชื่อที่สองเช่น? 267 00:12:11,660 --> 00:12:15,050 >> ดีคุณอาจจะไร้เดียงสาเพียงแค่ใส่มัน ที่บ๊อบเป็น แต่แล้วบ๊อบคือ 268 00:12:15,050 --> 00:12:17,300 เมาชนิดของถ้าคุณพยายามที่จะ ใส่ชื่อของเขาต่อไปและ 269 00:12:17,300 --> 00:12:18,240 มีห้องพักสำหรับเขาไม่ได้ 270 00:12:18,240 --> 00:12:21,400 ดังนั้นคุณอาจใส่บ๊อบที่ชาร์ลี, และคุณสามารถจินตนาการนี​​้ได้อย่างรวดเร็ว 271 00:12:21,400 --> 00:12:23,020 จุติเป็นบิตของระเบียบ 272 00:12:23,020 --> 00:12:25,600 บางสิ่งบางอย่างเชิงเส้นในท้ายที่สุดที่คุณ เพียงแค่ต้องค้นหาสิ่งที่ทั้ง 273 00:12:25,600 --> 00:12:28,190 กำลังมองหาอลิซหรือบ๊อบ หรือแอรอนหรือชาร์ลี 274 00:12:28,190 --> 00:12:33,230 >> ดังนั้นแทนที่จะเราเสนอแทนเพียง เป็นเส้นตรงละเอียดสำหรับการเปิดช่องว่าง 275 00:12:33,230 --> 00:12:36,450 และ plopping ชื่อนั่นเรา เสนอวิธีการที่นักเล่น 276 00:12:36,450 --> 00:12:41,740 ตารางแฮชยังคงดำเนินการด้วย อาร์เรย์ของดัชนี แต่ชนิดข้อมูลของ 277 00:12:41,740 --> 00:12:44,500 ดัชนีเหล่านี้เป็นตัวชี้ 278 00:12:44,500 --> 00:12:47,360 ตัวชี้กับสิ่งที่? 279 00:12:47,360 --> 00:12:48,730 ตัวชี้ไปยังการเชื่อมโยงรายการ 280 00:12:48,730 --> 00:12:53,330 >> เพราะจำได้ว่าเป็นรายการที่เชื่อมโยง จริงๆเพียงแค่ชี้ไปยังโหนดและ 281 00:12:53,330 --> 00:12:57,110 โหนดที่มีเขตข้อมูลถัดไปและโหนดที่ มีเขตข้อมูลถัดไปและอื่น ๆ 282 00:12:57,110 --> 00:13:00,690 ดังนั้นตอนนี้คุณสามารถคิดของอาร์เรย์นี้ ด้านซ้ายมือของตารางแฮชเป็น 283 00:13:00,690 --> 00:13:01,820 นำไปสู่​​การเชื่อมโยงรายชื่อ 284 00:13:01,820 --> 00:13:07,000 ข้อได้เปรียบที่เป็นถ้าคุณได้รับ การปะทะกันระหว่างอลิซและแอรอน 285 00:13:07,000 --> 00:13:09,300 สิ่งที่คุณทำกับ บุคคลดังกล่าวที่สอง? 286 00:13:09,300 --> 00:13:14,150 คุณเพียงแค่แนบให้เขาหรือเธอ ปลายหรือแม้กระทั่งการเริ่มต้น 287 00:13:14,150 --> 00:13:15,490 ของรายการที่เชื่อมโยงว่า 288 00:13:15,490 --> 00:13:17,340 >> และที่จริงให้เพียงบะหมี่กึ่งผ่าน ที่เพียงสอง 289 00:13:17,340 --> 00:13:18,640 ที่จะทำให้ความรู้สึกมากที่สุด 290 00:13:18,640 --> 00:13:22,060 ถ้าผมใส่อลิซและเธอจบลงด้วยการที่ สถานที่แรกแล้วฉันพยายามที่จะ 291 00:13:22,060 --> 00:13:25,310 ใส่ชื่อของแอรอนและมี เห็นได้ชัดว่าการปะทะกัน, ฉันควรวาง 292 00:13:25,310 --> 00:13:27,400 เขาที่จุดเริ่มต้น ของรายการที่เชื่อมโยง? 293 00:13:27,400 --> 00:13:30,944 นั่นเป็นสถานที่แรกที่ หรือที่ส่วนท้าย? 294 00:13:30,944 --> 00:13:31,440 >> ผู้ชม: [ได้ยิน] 295 00:13:31,440 --> 00:13:31,990 >> DAVID ลัน: ตกลง 296 00:13:31,990 --> 00:13:32,490 ผมได้ยินมาว่าการเริ่มต้น 297 00:13:32,490 --> 00:13:33,903 ที่จุดเริ่มต้นทำไม? 298 00:13:33,903 --> 00:13:34,750 >> ผู้ชม: [ได้ยิน] 299 00:13:34,750 --> 00:13:34,940 >> DAVID ลัน: ตกลง 300 00:13:34,940 --> 00:13:36,520 มันเรียงตามตัวอักษรเพื่อที่ว่าดี 301 00:13:36,520 --> 00:13:37,330 นั่นเป็นสถานที่ให้บริการที่ดี 302 00:13:37,330 --> 00:13:39,335 มันจะช่วยฉันเวลาที่อาจเกิดขึ้นบางส่วน 303 00:13:39,335 --> 00:13:43,290 มันจะไม่ยอมให้ฉันทำค้นหา binary แต่ฉัน อย่างน้อยอาจจะไม่สามารถที่จะแยกออก 304 00:13:43,290 --> 00:13:47,340 ของวงถ้าฉันรู้ดีว่าฉันวิธี อดีตที่ผ่านมามีแอรอนจะอยู่ในนี้ 305 00:13:47,340 --> 00:13:48,310 รายการที่เชื่อมโยงเรียง 306 00:13:48,310 --> 00:13:50,360 ผมจะได้ไม่ต้องเสียเวลาของฉันกำลังมองหา ไปตลอดทางจนถึงปลาย 307 00:13:50,360 --> 00:13:51,530 ดังนั้นที่ที่เหมาะสม 308 00:13:51,530 --> 00:13:54,710 ทำไมอื่นคุณอาจต้องการที่จะแทรก ชื่อชนกันที่ 309 00:13:54,710 --> 00:13:56,660 จุดเริ่มต้นของรายการ? 310 00:13:56,660 --> 00:13:57,397 ว่าคืออะไร? 311 00:13:57,397 --> 00:13:58,680 >> ผู้ชม: [ได้ยิน] 312 00:13:58,680 --> 00:14:00,820 >> DAVID ลัน: มันอาจจะใช้เวลานาน เพื่อไปยังจุดสิ้นสุดของรายการ 313 00:14:00,820 --> 00:14:02,490 และในความเป็นจริงอีกต่อไปและอีกต่อไป 314 00:14:02,490 --> 00:14:04,920 ชื่ออื่น ๆ ที่คุณใส่ว่า เริ่มต้นด้วยอีกต่อไปว่า 315 00:14:04,920 --> 00:14:06,280 ห่วงโซ่เป็นไปได้ 316 00:14:06,280 --> 00:14:07,890 อีกต่อไปแล้วว่าการเชื่อมโยง รายการเป็นไปได้ 317 00:14:07,890 --> 00:14:09,420 ดังนั้นคุณจริงๆเพียงแค่ เสียเวลาของคุณ 318 00:14:09,420 --> 00:14:14,070 บางทีคุณอาจจะดีกว่าการรักษา เวลาแทรกคง O ใหญ่ 1, 319 00:14:14,070 --> 00:14:18,470 เสมอโดยการใส่ชื่อที่ชน จุดเริ่มต้นของรายการที่เชื่อมโยง, 320 00:14:18,470 --> 00:14:21,230 และไม่ต้องกังวลมาก เกี่ยวกับการเรียงลำดับ 321 00:14:21,230 --> 00:14:22,600 >> คำตอบที่ดีที่สุดคืออะไร? 322 00:14:22,600 --> 00:14:23,320 มันไม่ชัดเจน 323 00:14:23,320 --> 00:14:26,140 ชนิดของมันขึ้นอยู่กับสิ่ง การกระจายคือสิ่งที่รูปแบบคือ 324 00:14:26,140 --> 00:14:27,850 ชื่อที่คุณใส่ 325 00:14:27,850 --> 00:14:29,430 มันไม่จำเป็นต้อง คำตอบที่ชัดเจน 326 00:14:29,430 --> 00:14:33,100 แต่ที่นี่ไปอีกครั้งคือ โอกาสที่การออกแบบ 327 00:14:33,100 --> 00:14:37,220 >> ดังนั้นเราจึงมองไปที่สิ่งนี้ซึ่ง เป็นจริงโอกาสที่ขนาดใหญ่อื่น ๆ 328 00:14:37,220 --> 00:14:38,180 สำหรับ p-6 ชุด 329 00:14:38,180 --> 00:14:41,770 และตระหนักถึงถ้าคุณยังไม่ได้ ดำผุดดำว่า Zamyla ลงทั้งสองคนนี้, กัญชา 330 00:14:41,770 --> 00:14:43,260 ตารางและพยายามในรายละเอียดมากขึ้น 331 00:14:43,260 --> 00:14:45,630 และคำแนะนำแบบวิดีโอเป็น ที่ฝังอยู่ใน p-ชุด spec 332 00:14:45,630 --> 00:14:46,590 นี่เป็นคู่ชีวิต - 333 00:14:46,590 --> 00:14:51,670 T-R-I-E และสิ่งที่เป็นที่น่าสนใจเกี่ยวกับ นี้คือการที่เวลาทำงาน 334 00:14:51,670 --> 00:14:59,510 ของการค้นหาสำหรับชื่อเช่นแมกซ์เวล ครั้งสุดท้ายที่เป็น O ใหญ่ของอะไร 335 00:14:59,510 --> 00:15:01,040 ว่าคืออะไร? 336 00:15:01,040 --> 00:15:01,920 >> ผู้ชม: จำนวนตัวอักษร 337 00:15:01,920 --> 00:15:02,550 >> DAVID ลัน: หมายเลขของตัวอักษร 338 00:15:02,550 --> 00:15:03,210 ผมได้ยินมาว่าสองสิ่ง 339 00:15:03,210 --> 00:15:04,630 จำนวนของตัวอักษรและเวลาคง 340 00:15:04,630 --> 00:15:05,540 ดังนั้นขอไปก่อนว่า 341 00:15:05,540 --> 00:15:06,410 จำนวนตัวอักษร 342 00:15:06,410 --> 00:15:10,195 ดีนี้โครงสร้างข้อมูลการเรียกคืนคือ ชอบต้นไม้ต้นไม้ครอบครัวแต่ละ 343 00:15:10,195 --> 00:15:12,860 โหนดที่มีการสร้างขึ้นจากอาร์เรย์ 344 00:15:12,860 --> 00:15:16,300 และอาร์เรย์ที่เป็นตัวชี้ไปยัง โหนดดังกล่าวอื่น ๆ หรืออื่น ๆ เช่น 345 00:15:16,300 --> 00:15:17,670 อาร์เรย์ในต้นไม้ 346 00:15:17,670 --> 00:15:22,890 >> ดังนั้นหากเราต้องการที่จะตรวจสอบแล้ว ไม่ว่าจะเป็นแม็กซ์อยู่ในที่นี่ผมอาจจะไป 347 00:15:22,890 --> 00:15:26,890 ไปยังแถวแรกที่ส่วนบนสุดของ ต้นไม้, รากที่เรียกว่าด้านบนของ 348 00:15:26,890 --> 00:15:30,521 Trie แล้วทำตามตัวชี้เมตร แล้วตัวชี้แล้ว x, 349 00:15:30,521 --> 00:15:31,710 W, E, l, l 350 00:15:31,710 --> 00:15:34,910 และจากนั้นเมื่อฉันเห็นบางสัญลักษณ์พิเศษ แสดงที่นี่เป็นรูปสามเหลี่ยม 351 00:15:34,910 --> 00:15:38,480 ในรหัสของคุณจะเห็นเรานำเสนอให้คุณ นำมาใช้เป็น bool เพียงแค่บอกว่าใช่ 352 00:15:38,480 --> 00:15:40,540 หรือไม่มีคำว่าหยุดที่นี่ 353 00:15:40,540 --> 00:15:45,270 >> ดีเมื่อเราไป M--X-W-E-L-L, รู้สึกเหมือนเจ็ด, บางที 354 00:15:45,270 --> 00:15:48,910 แปดถ้าเราไปหนึ่งอดีตที่ผ่านมามันแปด ขั้นตอนในการหาแมกซ์เวล 355 00:15:48,910 --> 00:15:53,050 หรือขอเรียกว่าเค แต่จำล่าสุด เวลาที่ฉันถกเถียงกันอยู่ว่าถ้ามี 356 00:15:53,050 --> 00:15:57,540 แนบเนียนยาวสูงสุดเมื่อ คำเช่นตัวอักษร 40 บางแปลก, 357 00:15:57,540 --> 00:16:00,810 ความยาวสูงสุดถึง ค่าคงที่ 358 00:16:00,810 --> 00:16:05,770 ดังนั้นจริงๆใช่มันใหญ่เทคนิค O จาก 8 หรือ 7 หรือใหญ่จริงๆโอเค แต่ 359 00:16:05,770 --> 00:16:09,420 ถ้ามีฝา จำกัด ในสิ่งที่ K อาจจะเป็นค่าคงที่ 360 00:16:09,420 --> 00:16:12,080 และดังนั้นจึง O ใหญ่ของ 1 อยู่ที่ ตอนท้ายของวัน 361 00:16:12,080 --> 00:16:13,040 >> ไม่ได้อยู่ในโลกแห่งความจริง 362 00:16:13,040 --> 00:16:15,960 ไม่ได้เมื่อคุณจริงเริ่มต้นดู นาฬิกาของคุณในขณะที่การทำงานของโปรแกรม 363 00:16:15,960 --> 00:16:20,690 มันแน่นอนจะเป็นบิต ช้ากว่าค่าคงที่อย่างแท้จริง 364 00:16:20,690 --> 00:16:21,840 เวลาอยู่กับขั้นตอนที่หนึ่ง 365 00:16:21,840 --> 00:16:25,540 มันเป็นไปได้เจ็ดหรือแปดขั้นตอน แต่ยังคงที่มากดีกว่ามาก 366 00:16:25,540 --> 00:16:30,080 กว่าขั้นตอนวิธีเช่น O ใหญ่ของ n ที่ ขึ้นอยู่กับขนาดของสิ่งที่อยู่ใน 367 00:16:30,080 --> 00:16:31,220 โครงสร้างข้อมูล 368 00:16:31,220 --> 00:16:34,970 >> สังเกตคว่ำนี่คือเราสามารถแทรก ล้านชื่อขึ้นในการนี​​้ 369 00:16:34,970 --> 00:16:38,170 โครงสร้างข้อมูล แต่วิธีการขั้นตอนอื่น ๆ อีกมากมาย มันจะพาเราไปหา 370 00:16:38,170 --> 00:16:40,480 แมกซ์เวลในกรณีที่? 371 00:16:40,480 --> 00:16:40,780 ไม่ 372 00:16:40,780 --> 00:16:41,820 เขาเป็นคนที่ได้รับผลกระทบ 373 00:16:41,820 --> 00:16:45,480 และถึงวันที่ฉันไม่คิดว่าเราได้เห็น ตัวอย่างของโครงสร้างข้อมูลหรือ 374 00:16:45,480 --> 00:16:48,560 อัลกอริทึมที่ได้อย่างสมบูรณ์ รับผลกระทบจากภายนอก 375 00:16:48,560 --> 00:16:50,040 พฤติกรรมเช่นเดียวกับที่ 376 00:16:50,040 --> 00:16:51,160 แต่เรื่องนี้ไม่สามารถเป็นที่น่าตื่นตาตื่นใจ 377 00:16:51,160 --> 00:16:52,900 นี้ไม่สามารถแก้ปัญหาเฉพาะ สำหรับ p-set 378 00:16:52,900 --> 00:16:53,570 >> และยังไม่ได้ 379 00:16:53,570 --> 00:16:55,980 นี้ไม่จำเป็นต้องข้อมูล โครงสร้างที่คุณควรจะไหลไป 380 00:16:55,980 --> 00:16:58,220 เพราะเช่นตารางกัญชาแลกเปลี่ยน, 381 00:16:58,220 --> 00:17:00,500 ราคาที่คุณจ่ายที่นี่คืออะไร? 382 00:17:00,500 --> 00:17:00,940 หน่วยความจำ 383 00:17:00,940 --> 00:17:02,890 ผมหมายถึงนี้เป็นที่เลวร้าย จำนวนหน่วยความจำ 384 00:17:02,890 --> 00:17:05,569 และคุณไม่สามารถค่อนข้างเห็นได้ที่นี่เพราะ ผู้เขียนของภาพนี้ 385 00:17:05,569 --> 00:17:09,420 ถูกตัดทอนอย่างเห็นได้ชัดทั้งหมดของอาร์เรย์, และเราไม่เห็นจำนวนมากและ 386 00:17:09,420 --> 00:17:12,700 B และ C และ Q และของ Y และ Z ในอาร์เรย์เหล่านี้ 387 00:17:12,700 --> 00:17:13,630 แต่พวกเขากำลังมี 388 00:17:13,630 --> 00:17:17,660 >> แต่ละโหนดเหล่านี้เป็นอาร์เรย์ทั้งหมด ของบางส่วนหรือมากกว่า 26 ไบต์แต่ละ 389 00:17:17,660 --> 00:17:19,170 ซึ่งหมายถึงตัวอักษร 390 00:17:19,170 --> 00:17:22,920 27 ในกรณีของเราเพื่อให้เราสามารถรองรับ apostrophes ในชุดปัญหา 391 00:17:22,920 --> 00:17:27,030 ดังนั้นนี่คือโครงสร้างข้อมูลที่เป็นจริง, จริงๆหนาแน่นและกว้าง 392 00:17:27,030 --> 00:17:30,880 และที่อยู่คนเดียวอาจท้ายชะลอตัว สิ่งที่ลงหรืออย่างน้อยต้นทุนคุณ 393 00:17:30,880 --> 00:17:32,240 พื้นที่มากขึ้น 394 00:17:32,240 --> 00:17:34,020 แต่อีกครั้งที่เราสามารถวาด การเปรียบเทียบที่นี่ 395 00:17:34,020 --> 00:17:39,190 >> ในขณะที่การเรียกคืนกลับมาที่เราประสบความสำเร็จมาก เวลาการทำงานที่น่าตื่นเต้นมากในการเรียงลำดับ 396 00:17:39,190 --> 00:17:42,880 เมื่อเราใช้ตัดจัดเรียง แต่ราคา เราจ่ายเพื่อให้บรรลุ n log n สำหรับการผสาน 397 00:17:42,880 --> 00:17:46,930 จัดเรียงจำเป็นที่เราใช้จ่าย มากขึ้นทรัพยากรสิ่ง? 398 00:17:46,930 --> 00:17:47,690 พื้นที่มากขึ้น 399 00:17:47,690 --> 00:17:50,530 เราต้องการอาร์เรย์รอง คัดลอกคนเข้าเช่นเดียวกับ 400 00:17:50,530 --> 00:17:51,620 เราได้ที่นี่บนเวที 401 00:17:51,620 --> 00:17:55,880 ดังนั้นอีกครั้งไม่มีผู้ชนะที่ชัดเจน, แต่เพียงแค่การออกแบบอัตนัย 402 00:17:55,880 --> 00:17:57,710 การตัดสินใจที่จะทำ 403 00:17:57,710 --> 00:17:58,060 >> ทั้งหมดขวา 404 00:17:58,060 --> 00:17:59,130 ดังนั้นวิธีการเกี่ยวกับเรื่องนี้? 405 00:17:59,130 --> 00:18:02,050 ทุกคนรับรู้ซึ่ง D-Hall แล้วหรือยัง 406 00:18:02,050 --> 00:18:02,440 ตกลง 407 00:18:02,440 --> 00:18:03,170 ดังนั้นเราสามคนทำ 408 00:18:03,170 --> 00:18:03,750 บ้านท้อง 409 00:18:03,750 --> 00:18:05,070 ดังนั้นนี่คือสำหรับการรับประทานอาหารท้อง 410 00:18:05,070 --> 00:18:09,650 ฉันจะเดิมพันทั้งหมดมีห้องอาหาร กองถาดเช่นนี้ 411 00:18:09,650 --> 00:18:11,950 และนี้เป็นจริงตัวแทน จากสิ่งที่เราได้ 412 00:18:11,950 --> 00:18:13,050 เห็นได้ชัดอยู่แล้ว 413 00:18:13,050 --> 00:18:14,850 เราเรียกว่าอักษรสแต็ค 414 00:18:14,850 --> 00:18:18,970 และสแต็คในแง่ของของคุณ หน่วยความจำของคอมพิวเตอร์เป็นที่ข้อมูลไป 415 00:18:18,970 --> 00:18:20,460 ในขณะที่ฟังก์ชั่นที่ถูกเรียกว่า 416 00:18:20,460 --> 00:18:23,410 >> ตัวอย่างเช่นสิ่งที่ชนิดของสิ่งที่ไป ในกองด้วยความเคารพ 417 00:18:23,410 --> 00:18:27,420 หน่วยความจำแบบเราได้กล่าว ในสัปดาห์ที่ผ่านมา? 418 00:18:27,420 --> 00:18:28,736 ว่าคืออะไร? 419 00:18:28,736 --> 00:18:29,670 >> ผู้ชม: โทรไปยังฟังก์ชั่น 420 00:18:29,670 --> 00:18:30,260 >> DAVID ลัน: ฉันขอโทษ 421 00:18:30,260 --> 00:18:31,210 >> ผู้ชม: โทรไปยังฟังก์ชั่น 422 00:18:31,210 --> 00:18:33,590 >> DAVID ลัน: โทรไปยังฟังก์ชั่น แต่ โดยเฉพาะภายในของแต่ละสิ่ง 423 00:18:33,590 --> 00:18:35,340 เฟรมเหล่านั้นหรือไม่ 424 00:18:35,340 --> 00:18:37,220 สิ่งที่ชนิดของสิ่ง? 425 00:18:37,220 --> 00:18:37,460 ใช่ 426 00:18:37,460 --> 00:18:38,500 ตัวแปรท้องถิ่นดังนั้น 427 00:18:38,500 --> 00:18:43,080 เมื่อใดก็ตามที่เราต้องการบางจัดเก็บในท้องถิ่น, เช่นเดียวกับการโต้แย้งหรือ int i หรือ int 428 00:18:43,080 --> 00:18:45,940 อุณหภูมิหรืออะไรก็ตามในประเทศ ตัวแปรคือเราได้รับ 429 00:18:45,940 --> 00:18:47,210 ที่วางบน stack 430 00:18:47,210 --> 00:18:49,610 และเราเรียกมันว่าสแต็คเพราะ ของความคิดที่ฝังรากลึก 431 00:18:49,610 --> 00:18:52,940 เพียงแค่ชนิดของการแข่งขันขึ้นกับความเป็นจริง, แนวคิดดังกล่าว 432 00:18:52,940 --> 00:18:56,650 >> แต่มันกลับกลายเป็นว่าสแต็คยังสามารถ ถูกมองว่าเป็นโครงสร้างข้อมูล, 433 00:18:56,650 --> 00:19:00,110 ทางเลือกให้กับอาร์เรย์ทางเลือก ไปยังรายการที่เชื่อมโยง 434 00:19:00,110 --> 00:19:02,770 สิ่งที่แนวคิดที่น่าสนใจมาก ที่ยังคงสามารถ 435 00:19:02,770 --> 00:19:06,030 ดำเนินการโดยใช้อย่างใดอย่างหนึ่งของคนเหล่านั้น สิ่ง แต่มันเป็นประเภทที่แตกต่างกันของ 436 00:19:06,030 --> 00:19:09,140 โครงสร้างข้อมูลสนับสนุนจริงๆ เพียงสองการดำเนินงาน 437 00:19:09,140 --> 00:19:11,000 แต่คุณสามารถเพิ่มเมื่อนักเล่น คุณสมบัติเหล่านี้กว่า 438 00:19:11,000 --> 00:19:12,180 แต่เหล่านี้เป็นพื้นฐาน - 439 00:19:12,180 --> 00:19:13,510 ผลักดันและ pop 440 00:19:13,510 --> 00:19:19,240 >> และความคิดที่มีสแต็คเป็นว่าถ้าผม มีที่นี่มีหรือไม่มี Annenberg 441 00:19:19,240 --> 00:19:22,880 รู้ถาดจากประตูถัดไป ที่มีจำนวน 9 กับมัน 442 00:19:22,880 --> 00:19:23,870 ดังนั้นเพียงแค่ int 443 00:19:23,870 --> 00:19:26,990 และฉันต้องการที่จะผลักดันนี้ลงบนข้อมูล โครงสร้างซึ่งปัจจุบันเป็นที่ว่างเปล่า 444 00:19:26,990 --> 00:19:28,790 พิจารณานี้ด้านล่างของสแต็ค 445 00:19:28,790 --> 00:19:33,150 ผมจะผลักดันจำนวน 9 ชุดนี้ลง สแต็ค, และตอนนี้ก็มีสิทธิ์ 446 00:19:33,150 --> 00:19:36,040 >> แต่สิ่งที่น่าสนใจเกี่ยวกับสแต็ค หมายถึงว่าถ้าผมต้องการที่จะผลักดัน 447 00:19:36,040 --> 00:19:40,210 บางค่าอื่น ๆ เช่น 17 และฉันผลักดัน นี้บนสแต็คที่ฉันจะทำ 448 00:19:40,210 --> 00:19:43,290 สิ่งเดียวที่ใช้งานง่าย, ฉันแค่ไป ที่จะนำมันขวาที่มนุษย์เรา 449 00:19:43,290 --> 00:19:45,180 จะกินที่จะนำมันบน 450 00:19:45,180 --> 00:19:48,850 แต่สิ่งที่น่าสนใจในขณะนี้ คือฉันจะได้รับที่ 9 อย่างไร 451 00:19:48,850 --> 00:19:50,670 คุณจะรู้ว่าที่ฉันทำไม่ได้โดยไม่มีความพยายามบาง 452 00:19:50,670 --> 00:19:54,070 >> ดังนั้นที่น่าสนใจเกี่ยวกับสิ่งที่ สแต็คคือโดยการออกแบบ 453 00:19:54,070 --> 00:19:56,330 มันเป็นโครงสร้างข้อมูล LIFO 454 00:19:56,330 --> 00:19:59,680 วิธีการโง่ในการอธิบาย สุดท้ายในออกก่อน 455 00:19:59,680 --> 00:20:03,280 ดังนั้นตัวเลขสุดท้ายใน ในเวลานี้ก็คือ 17 456 00:20:03,280 --> 00:20:07,540 ดังนั้นถ้าฉันต้องการที่จะปรากฏบางสิ่งบางอย่างออกไป ของสแต็คก็จะไม่สามารถอยู่ 17 457 00:20:07,540 --> 00:20:11,890 จึงมีคำสั่งบังคับของคน การดำเนินงานที่นี่ที่รายการสุดท้าย 458 00:20:11,890 --> 00:20:14,260 ในจะต้องมีครั้งแรกหนึ่งออก 459 00:20:14,260 --> 00:20:16,440 ดังนั้นตัวย่อ, LIFO 460 00:20:16,440 --> 00:20:19,160 >> ดังนั้นทำไมนี้อาจจะมีประโยชน์? 461 00:20:19,160 --> 00:20:22,690 เป็นบริบทของพวกเขาในที่ที่คุณต้องการ ต้องการโครงสร้างข้อมูลเช่นนี้หรือไม่ 462 00:20:22,690 --> 00:20:24,810 ดีจะได้รับประโยชน์อย่างแน่นอน ภายในเครื่องคอมพิวเตอร์ 463 00:20:24,810 --> 00:20:29,050 เพื่อให้ระบบการดำเนินงานอย่างชัดเจนใช้นี้ ชนิดของโครงสร้างข้อมูลสำหรับกอง 464 00:20:29,050 --> 00:20:32,800 นอกจากนี้เรายังจะได้เห็นความคิดเดียวกัน เมื่อมันมาถึงหน้าเว็บ 465 00:20:32,800 --> 00:20:35,890 ดังนั้นสัปดาห์นี้และสัปดาห์ถัดไปและไกลออกไป และในขณะที่คุณเริ่มต้นการดำเนินการเว็บ 466 00:20:35,890 --> 00:20:39,490 หน้าเว็บในภาษาที่เรียกว่า HTML คุณสามารถ จริงใช้โครงสร้างข้อมูลเช่น 467 00:20:39,490 --> 00:20:42,690 นี้เพื่อตรวจสอบว่าหน้า จัดรูปแบบได้อย่างถูกต้อง 468 00:20:42,690 --> 00:20:47,170 เพราะเราจะเห็นหน้าเว็บทั้งหมดตาม เรียงลำดับจากลำดับชั้นเยื้อง 469 00:20:47,170 --> 00:20:52,030 ที่จะตอนท้ายของวันที่จะต้อง โครงสร้างต้นไม้ที่อยู่ภายใต้ฝากระโปรง 470 00:20:52,030 --> 00:20:53,620 ดังนั้นเพิ่มเติมว่าในเวลาเพียงเล็กน้อย 471 00:20:53,620 --> 00:20:56,560 >> แต่ตอนนี้ขอเสนอให้ ขณะที่วิธีการที่เราจะไปเกี่ยวกับการ 472 00:20:56,560 --> 00:20:58,830 ที่เป็นตัวแทนของสแตกอะไรคืออะไร 473 00:20:58,830 --> 00:21:03,370 ผมขอเสนอว่าเราดำเนินการ สแต็คที่มีรหัสเช่นนี้ 474 00:21:03,370 --> 00:21:07,990 ดังนั้นสแต็คเป็นไปได้ภายในของมัน สองสิ่งอาร์เรย์, ถาดที่เรียกว่า 475 00:21:07,990 --> 00:21:09,510 เพียงเพื่อให้สอดคล้องกับการสาธิต 476 00:21:09,510 --> 00:21:12,660 และแต่ละรายการในอาร์เรย์ที่ เป็นไปได้ชนิด int 477 00:21:12,660 --> 00:21:14,740 และความสามารถสันนิษฐานว่าเป็นอะไร 478 00:21:14,740 --> 00:21:18,796 เพราะผมไม่ได้เขียน ความละเอียดที่นี่ 479 00:21:18,796 --> 00:21:21,535 >> มันอาจจะสูงสุด ขนาดของอาร์เรย์ 480 00:21:21,535 --> 00:21:25,150 และจะประกาศอาจจะเป็นคม กำหนดที่ด้านบนของไฟล์บาง 481 00:21:25,150 --> 00:21:28,450 ชนิดของค่าคงที่ส่อให้เห็นว่าเป็นไปตามที่ มูลค่าเพียง 482 00:21:28,450 --> 00:21:32,250 ดังนั้นกำลังการผลิตบางแห่งถูกกำหนด เป็นขนาดที่เป็นไปได้สูงสุด 483 00:21:32,250 --> 00:21:35,590 ในขณะที่ภายในของโครงสร้างข้อมูล หรือที่เรียกว่าสแต็คจะมี 484 00:21:35,590 --> 00:21:38,630 เป็นจำนวนเต็มรู้จักกันในชื่อ เป็นเพียงขนาด 485 00:21:38,630 --> 00:21:43,400 >> ดังนั้นถ้ามีการแสดงในตอนนี้ pictorially, ขอสมมติว่านี้ 486 00:21:43,400 --> 00:21:48,070 กล่องดำทั้งเป็นตัวแทนของสแต็คของฉัน 487 00:21:48,070 --> 00:21:50,070 ภายในของมันสองตัวแปรคือ 488 00:21:50,070 --> 00:21:54,780 ดังนั้นฉันจะวาด คนแรกเป็นขนาด 489 00:21:54,780 --> 00:21:57,420 และคนที่สองฉันจะ การวาดเป็นอาร์เรย์ 490 00:21:57,420 --> 00:22:01,060 >> แต่เพียงเพื่อให้สิ่งที่เป็นระเบียบ ปกติผมจะวาดอาร์เรย์เช่น 491 00:22:01,060 --> 00:22:04,910 นี้ แต่มันชนิดของดี ถ้าเราให้ตรงกับความเป็นจริงหรือ 492 00:22:04,910 --> 00:22:06,230 ตรงกับรูปแบบจิต 493 00:22:06,230 --> 00:22:12,880 เพื่อให้ฉันวาดแทนอาร์เรย์ ในแนวตั้งซึ่งเป็นเพียงอีกครั้ง 494 00:22:12,880 --> 00:22:13,840 การกระทำของศิลปิน 495 00:22:13,840 --> 00:22:16,610 ไม่ได้เรื่องจริงๆสิ่งที่มัน คืออยู่ภายใต้ฝากระโปรง 496 00:22:16,610 --> 00:22:20,350 และเราจะบอกให้ว่าตามค่าเริ่มต้น กำลังการผลิตเป็นไปได้สาม 497 00:22:20,350 --> 00:22:23,480 ดังนั้นนี้จะเป็นสถานที่ 0 นี้ จะเป็นสถานที่ 1 นี้ 498 00:22:23,480 --> 00:22:25,740 จะเป็น 2 สถานที่ 499 00:22:25,740 --> 00:22:29,330 >> ถ้าฉันให้สินบนกับลูกบอลความเครียดก็จะ ใครบางคนชอบที่จะเกิดขึ้นและเรียกใช้ 500 00:22:29,330 --> 00:22:30,870 คณะกรรมการที่นี่รอสักครู่? 501 00:22:30,870 --> 00:22:31,960 ตกลงเห็นมือของคุณเป็นครั้งแรก 502 00:22:31,960 --> 00:22:33,950 มาขึ้น 503 00:22:33,950 --> 00:22:36,500 ทั้งหมดขวา 504 00:22:36,500 --> 00:22:38,760 ดังนั้นผมจึงเชื่อว่ามันเป็นสตีเว่น 505 00:22:38,760 --> 00:22:40,035 มาขึ้น 506 00:22:40,035 --> 00:22:40,770 ทั้งหมดขวา 507 00:22:40,770 --> 00:22:46,760 >> แต่สมมติว่าตอนนี้เราย้อนกลับไปเริ่มต้น รัฐของโลกที่ฉัน 508 00:22:46,760 --> 00:22:52,180 มีเพียงการประกาศสแต็คและก็ จะเป็นในสามของความจุ 509 00:22:52,180 --> 00:22:54,470 แต่ขนาดยังไม่ได้กำหนด 510 00:22:54,470 --> 00:22:56,100 ถาดยังไม่ได้กำหนด 511 00:22:56,100 --> 00:22:57,300 ดังนั้นคู่ในคำถามแรก 512 00:22:57,300 --> 00:23:01,310 และให้ฉันให้คุณไมค์เพื่อให้คุณสามารถ มีส่วนร่วมอย่างแข็งขันมากขึ้นในเรื่องนี้ 513 00:23:01,310 --> 00:23:05,190 >> ดังนั้นภายในของขนาดเป็นสิ่งที่ในขณะนี้ ในเวลาถ้าทุกอย่างที่ฉันได้ทำคือ 514 00:23:05,190 --> 00:23:09,340 ประกาศกองด้วย หนึ่งบรรทัดของรหัส? 515 00:23:09,340 --> 00:23:10,100 >> STEVEN: ไม่มาก 516 00:23:10,100 --> 00:23:12,080 >> DAVID ลัน: ตกลงไม่มาก 517 00:23:12,080 --> 00:23:14,410 เรารู้ว่ามีอะไรอยู่ภายในขนาด เรารู้ว่ามีอะไรอยู่ภายใน 518 00:23:14,410 --> 00:23:16,330 ของอาร์เรย์ที่นี่? 519 00:23:16,330 --> 00:23:18,630 >> STEVEN: เพียงรหัสสุ่มขวา? 520 00:23:18,630 --> 00:23:20,220 เพียง - 521 00:23:20,220 --> 00:23:23,230 >> DAVID ลัน: ใช่ฉันจะไป เรียกมันว่ารหัส แต่สุ่ม - 522 00:23:23,230 --> 00:23:23,820 >> STEVEN: กิจกรรม 523 00:23:23,820 --> 00:23:28,290 >> DAVID ลัน: สิ่งที่ต้องการสุ่ม 524 00:23:28,290 --> 00:23:28,870 >> STEVEN: Bits 525 00:23:28,870 --> 00:23:29,530 >> DAVID ลัน: Bits ขวา? 526 00:23:29,530 --> 00:23:31,190 ดังนั้นค่าขยะใช่มั้ย? 527 00:23:31,190 --> 00:23:33,470 พีชคณิตดังนั้นจาก 0 และ 1 528 00:23:33,470 --> 00:23:35,920 เศษของประเพณีหน้าที่แล้ว ของหน่วยความจำนี้ 529 00:23:35,920 --> 00:23:38,150 และเราไม่ทราบจริงๆสิ่งที่ค่า จะดังนั้นเราจึงมักจะวาดพวกเขา 530 00:23:38,150 --> 00:23:38,930 เป็นเครื่องหมายคำถาม 531 00:23:38,930 --> 00:23:41,990 >> ดังนั้นสิ่งแรกที่เราสันนิษฐานว่า ไปที่ต้องการทำที่นี่ - 532 00:23:41,990 --> 00:23:46,630 และให้ฉันให้ฟิลด์นี้ภายใน ของมีชื่อ - ถาด 533 00:23:46,630 --> 00:23:49,540 เราควรจะเริ่มต้นสิ่งที่สันนิษฐานว่า ขนาดถ้าเราต้องการ 534 00:23:49,540 --> 00:23:51,040 เริ่มใช้สแต็คนี้ 535 00:23:51,040 --> 00:23:53,070 >> STEVEN: Tray ย่อย 3 536 00:23:53,070 --> 00:23:53,910 >> DAVID ลัน: ดังนั้นตกลง 537 00:23:53,910 --> 00:23:56,710 ต้องมีความชัดเจนความจุมีการประกาศ ที่อื่นที่สาม 538 00:23:56,710 --> 00:23:58,570 และนั่นคือสิ่งที่ผมเคยใช้ ในการจัดสรรอาร์เรย์ 539 00:23:58,570 --> 00:24:03,535 ขนาดจะไปดูวิธีการหลาย ถาดมีอยู่ในปัจจุบันในกอง 540 00:24:03,535 --> 00:24:03,880 >> STEVEN: ศูนย์ 541 00:24:03,880 --> 00:24:04,460 >> DAVID ลัน: ดังนั้นจึงควรจะเป็นศูนย์ 542 00:24:04,460 --> 00:24:07,760 เพื่อไปข้างหน้าและมีนิ้วมือใด ๆ วาดเป็นศูนย์ในขนาดที่ 543 00:24:07,760 --> 00:24:08,440 ทั้งหมดขวา 544 00:24:08,440 --> 00:24:10,920 ดังนั้นตอนนี้ข้างในของสิ่งนี้ ที่นี่เราไม่ทราบ 545 00:24:10,920 --> 00:24:12,160 เหล่านี้จริงๆเพียงแค่ค่าขยะ 546 00:24:12,160 --> 00:24:14,800 ดังนั้นเราจึงสามารถวาดเครื่องหมายคำถาม แต่ ขอให้คณะกรรมการที่สะอาดสำหรับตอนนี้ 547 00:24:14,800 --> 00:24:16,300 เพราะมันไม่ได้เรื่อง ของสิ่งที่มี 548 00:24:16,300 --> 00:24:19,130 เราไม่จำเป็นต้องเริ่มต้นอาร์เรย์ เพื่ออะไรเพราะถ้าเรารู้ว่า 549 00:24:19,130 --> 00:24:23,100 ขนาดของสแต็คเป็นศูนย์ดีเรา ไม่ควรที่จะมองหาที่ใดใน 550 00:24:23,100 --> 00:24:25,590 แถวต่อไปนี้ จุดนี้ในเวลา 551 00:24:25,590 --> 00:24:29,970 >> ดังนั้นตอนนี้ผมคิดว่าจะผลักดัน หมายเลข 9 ลง stack 552 00:24:29,970 --> 00:24:33,750 วิธีการที่เราควรปรับปรุงโครงสร้างข้อมูล ภายในกล่องดำนี้ 553 00:24:33,750 --> 00:24:35,540 ค่าอะไรบ้างที่ต้องเปลี่ยน? 554 00:24:35,540 --> 00:24:36,200 >> STEVEN: ภายใน - 555 00:24:36,200 --> 00:24:37,400 ขนาด? 556 00:24:37,400 --> 00:24:37,650 >> DAVID ลัน: ตกลง 557 00:24:37,650 --> 00:24:38,770 ขนาดควรจะเป็นอะไร 558 00:24:38,770 --> 00:24:39,580 >> STEVEN: ขนาดจะเป็นหนึ่ง 559 00:24:39,580 --> 00:24:39,870 >> DAVID ลัน: ตกลง 560 00:24:39,870 --> 00:24:41,110 ดังนั้นขนาดควรจะเป็นอย่างใดอย่างหนึ่ง 561 00:24:41,110 --> 00:24:42,540 เพื่อให้คุณสามารถทำเช่นนี้ในสองวิธี 562 00:24:42,540 --> 00:24:46,920 ผมขอให้คุณตอนนี้ของคุณ นิ้วเป็นยางลบ 563 00:24:46,920 --> 00:24:47,260 ทั้งหมดขวา 564 00:24:47,260 --> 00:24:49,960 แล้วตอนนี้นิ้วของคุณแปรงคือ 565 00:24:49,960 --> 00:24:50,330 ทั้งหมดขวา 566 00:24:50,330 --> 00:24:52,820 และตอนนี้อะไรที่มีการเปลี่ยนแปลง เห็นได้ชัดว่าในโครงสร้างข้อมูล? 567 00:24:52,820 --> 00:24:57,060 >> STEVEN: เรากำลังจะจาก ด้านล่างขึ้นถึง 9 568 00:24:57,060 --> 00:24:57,760 >> DAVID ลัน: 9 569 00:24:57,760 --> 00:24:58,420 ตกลงดี 570 00:24:58,420 --> 00:25:01,550 ดังนั้นยังคงไม่สำคัญอะไรที่ สถานที่หนึ่งหรือสองเพราะพวกเขากำลัง 571 00:25:01,550 --> 00:25:04,520 ค่าขยะ แต่เราไม่ควรกังวล กำลังมองหาเพราะมีขนาดเป็น 572 00:25:04,520 --> 00:25:07,540 บอกเราว่ามีเพียงองค์ประกอบแรก เป็นจริงถูกต้องตามกฎหมาย 573 00:25:07,540 --> 00:25:10,400 ดังนั้นตอนนี้ฉันจะผลักดันลงบน 17 รายการ 574 00:25:10,400 --> 00:25:11,830 ที่เกิดขึ้นกับภาพยนตร์เรื่องนี้คืออะไร? 575 00:25:11,830 --> 00:25:14,720 >> STEVEN: ขนาดดังนั้นจะไปที่สอง 576 00:25:14,720 --> 00:25:15,300 >> DAVID ลัน: ตกลง 577 00:25:15,300 --> 00:25:16,070 คุณยางลบ - 578 00:25:16,070 --> 00:25:16,810 อุ่ย 579 00:25:16,810 --> 00:25:18,026 คุณยางลบ 580 00:25:18,026 --> 00:25:18,840 >> STEVEN: ยางลบ 581 00:25:18,840 --> 00:25:19,720 >> DAVID ลัน: คุณแปรง 582 00:25:19,720 --> 00:25:20,560 >> STEVEN: แปรง 583 00:25:20,560 --> 00:25:20,920 >> DAVID ลัน: ตกลง 584 00:25:20,920 --> 00:25:21,600 และสิ่งอื่นใช่หรือไม่ 585 00:25:21,600 --> 00:25:22,600 >> STEVEN: และแล้วเรา - 586 00:25:22,600 --> 00:25:22,915 >> DAVID ลัน: เราผลักดัน 17 587 00:25:22,915 --> 00:25:24,760 >> STEVEN: เราติด 17 ด้านบนดังนั้น - 588 00:25:24,760 --> 00:25:25,710 >> DAVID ลัน: ตกลงที่ดี 589 00:25:25,710 --> 00:25:27,040 >> STEVEN: - วางมันลง 590 00:25:27,040 --> 00:25:27,530 >> DAVID ลัน: ทั้งหมดขวา 591 00:25:27,530 --> 00:25:27,940 ก็เริ่มง่าย 592 00:25:27,940 --> 00:25:29,300 ผมไม่ได้ไปช่วยคุณในเวลานี้ 593 00:25:29,300 --> 00:25:30,510 กด 22 594 00:25:30,510 --> 00:25:31,720 >> STEVEN: Done 595 00:25:31,720 --> 00:25:34,870 กลายเป็นยางลบ 596 00:25:34,870 --> 00:25:37,340 ผมกลายเป็นแปรง 597 00:25:37,340 --> 00:25:39,340 แล้วฉันวาง 22 598 00:25:39,340 --> 00:25:40,100 >> DAVID ลัน: 22 599 00:25:40,100 --> 00:25:40,620 ยอดเยี่ยม 600 00:25:40,620 --> 00:25:41,380 ดังนั้นอีกครั้งหนึ่ง 601 00:25:41,380 --> 00:25:44,280 ฉันตอนนี้ที่จะผลักดัน ลงบนสแต็ค 26 602 00:25:44,280 --> 00:25:46,350 >> STEVEN: Ooh 603 00:25:46,350 --> 00:25:50,278 โอ้พุทโธ่ 604 00:25:50,278 --> 00:25:52,520 จริงๆคุณจับฉัน off guard 605 00:25:52,520 --> 00:25:53,703 >> DAVID ลัน: คุณไม่ได้ ดูจะมาถึงนี้? 606 00:25:53,703 --> 00:25:55,930 >> STEVEN: ฉันไม่เห็นจะมาถึงนี้ 607 00:25:55,930 --> 00:25:58,756 เราจะได้ความจุเริ่มต้นใหม่? 608 00:25:58,756 --> 00:25:59,790 >> DAVID ลัน: นั่นเป็นคำถามที่ดี 609 00:25:59,790 --> 00:26:02,360 ดังนั้นเราจึงทาสีชนิดของตัวเอง ในมุมที่นี่ 610 00:26:02,360 --> 00:26:06,740 มีจริงๆไม่มีออกที่ดีสำหรับสตีเว่น เพราะเราได้รับการจัดสรรแถวนี้ 611 00:26:06,740 --> 00:26:09,130 แบบคงที่เพื่อที่จะพูด, ภายใน ของโครงสร้างข้อมูล 612 00:26:09,130 --> 00:26:12,170 และเราได้เป็นหลักรหัสยาก มันจะมีสามขนาด 613 00:26:12,170 --> 00:26:14,170 ดังนั้นเราจึงไม่สามารถจริงๆจัดสรรมัน 614 00:26:14,170 --> 00:26:20,020 >> เราสามารถถ้าเราเดินกลับไปในเรา นิยามใหม่ถาดเป็นตัวชี้ว่า 615 00:26:20,020 --> 00:26:22,300 จากนั้นเราจะใช้หน่วยความจำ malloc มือเพื่อ 616 00:26:22,300 --> 00:26:25,050 เพราะถ้าเราได้หน่วยความจำจาก กองผ่าน malloc เรา 617 00:26:25,050 --> 00:26:26,430 ก็จะเป็นอิสระมัน 618 00:26:26,430 --> 00:26:29,630 แต่ก่อนที่จะพ้นที่เราจะได้ จัดสรรเป็นก้อนขนาดใหญ่ของหน่วยความจำ 619 00:26:29,630 --> 00:26:31,330 ปรับปรุงตัวชี้และอื่น ๆ 620 00:26:31,330 --> 00:26:33,500 แต่ตอนนี้เป็นจริง ที่ดีที่สุดที่เราสามารถทำได้ 621 00:26:33,500 --> 00:26:36,360 ผลักดันและ pop จะสันนิษฐานไป ที่จะมีการส่งสัญญาณข้อผิดพลาดบาง 622 00:26:36,360 --> 00:26:40,270 >> ดังนั้นสำหรับตัวอย่างเช่นการดำเนินงานของเรา ของการผลักดันจะกลับมาบูลซึ่ง 623 00:26:40,270 --> 00:26:42,390 กลับไปก่อนหน้านี้จริงจริงจริง 624 00:26:42,390 --> 00:26:48,390 แต่ครั้งที่สี่ก็จะมี เพื่อกลับเท็จเช่น 625 00:26:48,390 --> 00:26:48,540 ทั้งหมดขวา 626 00:26:48,540 --> 00:26:49,540 ทำได้ดีมาก 627 00:26:49,540 --> 00:26:50,060 ขอแสดงความยินดี 628 00:26:50,060 --> 00:26:52,160 คุณได้รับลูกบอลความเครียดของคุณในวันนี้ 629 00:26:52,160 --> 00:26:53,110 >> [APPLAUSE] 630 00:26:53,110 --> 00:26:54,382 >> STEVEN: ขอบคุณ 631 00:26:54,382 --> 00:26:55,680 >> DAVID ลัน: ขอบคุณ 632 00:26:55,680 --> 00:26:59,740 ตกลงดังนั้นนี้ดูเหมือนว่าจะมีไม่มาก ของขั้นตอนไปข้างหน้าใช่มั้ย? 633 00:26:59,740 --> 00:27:01,410 เราอธิบายโครงสร้างข้อมูลนี้ 634 00:27:01,410 --> 00:27:02,320 มันเป็นเรื่องที่น่าสนใจใช่มั้ย? 635 00:27:02,320 --> 00:27:03,200 ระบบปฏิบัติการเช่นนั้น 636 00:27:03,200 --> 00:27:06,360 เห็นได้ชัดว่าเว็บสามารถใช้ประโยชน์จากนี้ และโปรแกรมอื่น ๆ ยังคง 637 00:27:06,360 --> 00:27:10,870 แต่สิ่งที่เป็นข้อ จำกัด โง่ว่าเรา กลับไปยังสัปดาห์การจัดเรียงของสอง จำกัด 638 00:27:10,870 --> 00:27:12,880 ที่เรามีการแก้ไขอาร์เรย์ขนาด 639 00:27:12,880 --> 00:27:15,010 >> จึงมีจริงคู่ของ วิธีที่เราสามารถแก้ปัญหานี้ 640 00:27:15,010 --> 00:27:18,750 เราสามารถจัดสรรแบบไดนามิกอาร์เรย์ ไม่ยากโดยการเข้ารหัสมันเป็นฉันได้ 641 00:27:18,750 --> 00:27:22,600 ทำที่นี่ แต่แทนที่จะ re-ประกาศ นี้เพียงเพื่อให้มีความชัดเจนเช่น 642 00:27:22,600 --> 00:27:23,830 บางอย่างเช่นนี้ 643 00:27:23,830 --> 00:27:29,040 Int ถาด * ไม่ตัดสินใจ กับความจุยัง 644 00:27:29,040 --> 00:27:35,460 แต่เมื่อผมประกาศสแต็คที่อื่น ๆ ในรหัสของฉันฉันแล้วสามารถโทร malloc, 645 00:27:35,460 --> 00:27:38,250 ได้รับที่อยู่ของก้อน หน่วยความจำและฉันสามารถกำหนด 646 00:27:38,250 --> 00:27:39,980 ที่อยู่ไปที่ถาด 647 00:27:39,980 --> 00:27:43,340 >> แล้วเพราะมันเป็นเพียงก้อน หน่วยความจำที่ฉันจะยังคงใช้ตาราง 648 00:27:43,340 --> 00:27:45,450 วงเล็บในทางปกติ 649 00:27:45,450 --> 00:27:49,020 เพราะอีกครั้งจะมีการจัดเรียงของนี้ เทียบเท่าการทำงานของอาร์เรย์และ 650 00:27:49,020 --> 00:27:50,820 ชิ้นของหน่วยความจำที่มา กลับมาจาก malloc 651 00:27:50,820 --> 00:27:53,090 เราสามารถปฏิบัติต่อคนอื่น โดยใช้การคำนวณตัวชี้หรือ 652 00:27:53,090 --> 00:27:54,440 สัญกรณ์วงเล็บเหลี่ยม 653 00:27:54,440 --> 00:27:55,660 ดังนั้นวิธีการหนึ่งของ 654 00:27:55,660 --> 00:28:00,120 >> แต่วิธีการอื่นที่เราอาจจะดำเนินการนี​​้ โครงสร้างข้อมูลเดียวกันที่อาจเกิดขึ้น? 655 00:28:00,120 --> 00:28:00,280 ใช่ไหม? 656 00:28:00,280 --> 00:28:04,530 ฉันรู้สึกเหมือนเราเพิ่งแก้ไขนี้ ปัญหาเช่นสัปดาห์ที่ผ่านมา 657 00:28:04,530 --> 00:28:08,860 สิ่งที่วิธีการแก้ปัญหานี้คือ ที่สตีเว่นวิ่งเข้าไปใน? 658 00:28:08,860 --> 00:28:10,370 การเชื่อมโยงรายการดังนั้นขวา 659 00:28:10,370 --> 00:28:13,410 >> หากปัญหาก็คือว่าเรากำลังวาดภาพ ตัวเองในมุมโดยการจัดสรร 660 00:28:13,410 --> 00:28:17,580 ในหน่วยความจำน้อยเกินไปล่วงหน้าว่าเรา แล้วมีอย่างใดจัดการกับดี 661 00:28:17,580 --> 00:28:19,880 ทำไมไม่เพียง แต่หลีกเลี่ยงที่ ออกไปโดยสิ้นเชิง? 662 00:28:19,880 --> 00:28:26,170 ทำไมไม่เพียง แต่ประกาศถาดจะเป็น ตัวชี้ไปยังโหนด Ergo, รายการที่เชื่อมโยง, 663 00:28:26,170 --> 00:28:30,740 แล้วก็จัดสรรโหนดใหม่ สตีเว่นเวลาที่จำเป็นเพื่อให้พอดีกับทุก 664 00:28:30,740 --> 00:28:32,400 จำนวนเป็นโครงสร้างข้อมูล 665 00:28:32,400 --> 00:28:34,200 >> ดังนั้นภาพที่จะต้องเปลี่ยน 666 00:28:34,200 --> 00:28:38,220 มันจะไม่ได้เป็นที่สะอาดและเป็น ง่ายๆเป็นเพียงอาร์เรย์ของสาม ints 667 00:28:38,220 --> 00:28:42,970 ตอนนี้มันจะเป็นตัวชี้ไปยัง โครงสร้างและโครงสร้างที่เป็นไป 668 00:28:42,970 --> 00:28:44,830 มี int และตัวชี้ต่อไป 669 00:28:44,830 --> 00:28:47,670 มันจะนำไปสู่​​การผ่านตัวชี้ว่า ไปยังอีก struct ดังกล่าวไปยัง 670 00:28:47,670 --> 00:28:48,600 อีก struct เช่น 671 00:28:48,600 --> 00:28:50,560 ดังนั้นภาพที่จะเป็นจริง รับบิต Messier 672 00:28:50,560 --> 00:28:52,950 และเรามีลูกศรต้องการผูก ทุกอย่างร่วมกัน 673 00:28:52,950 --> 00:28:55,280 >> แต่ที่ดีที่ถูกต้องเพราะ เราได้เห็นวิธีการทำเช่นนี้ 674 00:28:55,280 --> 00:28:58,180 และเมื่อคุณได้รับความสะดวกสบาย บางสิ่งบางอย่างที่เชื่อมโยงการดำเนินการเช่น 675 00:28:58,180 --> 00:29:01,450 รายการที่คุณจะต้องทำอย่างไรถ้าคุณ เลือกที่จะใช้ตารางแฮชด้​​วย 676 00:29:01,450 --> 00:29:05,120 ผูกมัดแยกต่างหากสำหรับ p-6 ชุดคุณสามารถ ใช้เป็นอาคารตึกหรือ 677 00:29:05,120 --> 00:29:08,870 ส่วนผสมหรือใน Scratch พูด ขั้นตอนบางอย่างที่คุณใส่คุณ 678 00:29:08,870 --> 00:29:12,560 สร้างชิ้นส่วนจิ๊กซอว์ของคุณเอง ที่คุณสามารถนำมาใช้ใหม่ 679 00:29:12,560 --> 00:29:17,090 tradeoffs ดังนั้นการแก้ปัญหาที่อาจเกิดขึ้น แต่ ที่เราได้เห็นจริงก่อน 680 00:29:17,090 --> 00:29:20,560 >> ค่อนข้างบ่อยดังนั้นคุณจะเห็นนี้ทุกคน ปีหรือสองปีเมื่อแอปเปิ้ลออก 681 00:29:20,560 --> 00:29:23,060 สิ่งใหม่ ๆ และทุกคนบ้า เส้นขึ้นที่ด้านนอกของแอปเปิ้ล 682 00:29:23,060 --> 00:29:27,050 เก็บที่จะซื้อของพวกเขาเล็กน้อย อัพเกรดฮาร์ดแวร์ 683 00:29:27,050 --> 00:29:30,420 ผมพูดนี้ก็ตกลงเพราะ ผมเป็นหนึ่งในคนเหล่านั้น 684 00:29:30,420 --> 00:29:35,140 ดังนั้นสิ่งที่ชนิดของโครงสร้างข้อมูล อาจเป็นตัวแทนของความเป็นจริงนี้ 685 00:29:35,140 --> 00:29:36,980 >> ดีขอเรียกว่าคิวสาย 686 00:29:36,980 --> 00:29:40,270 ดังนั้นอังกฤษจะเรียกว่าโดยปกติจะเป็น คิวต่อไปเพื่อให้มันเป็นชื่อดี 687 00:29:40,270 --> 00:29:44,960 และทั้งสองการดำเนินงานที่คิว จะสนับสนุนเราจะเรียก enqueue 688 00:29:44,960 --> 00:29:48,900 การดำเนินงานและการดำเนินการ dequeue, ซึ่งเป็นสิ่งที่คล้ายกันใน 689 00:29:48,900 --> 00:29:50,120 จิตวิญญาณที่จะผลักดันและ pop 690 00:29:50,120 --> 00:29:54,060 มันเรียงลำดับที่แตกต่างกันเพียงแค่ใน การประชุมสิ่งที่เรากำลังเรียกร้องเหล่านี้ 691 00:29:54,060 --> 00:29:57,680 แต่การที่จะ enqueue สิ่งที่หมายถึงการเพิ่ม หรือใส่ไปให้โครงสร้างข้อมูล 692 00:29:57,680 --> 00:29:59,570 เพื่อ dequeue วิธีที่จะเอามันออกไป 693 00:29:59,570 --> 00:30:05,170 แต่ในขณะที่สแต็คเป็นข้อมูล LIFO โครงสร้างคิวเป็นครั้งแรกแล้ว 694 00:30:05,170 --> 00:30:06,740 ครั้งแรกที่ออกโครงสร้างข้อมูล 695 00:30:06,740 --> 00:30:10,050 >> หากคุณเป็นคนแรกในสาย คุณจะเป็นคนแรกที่ได้รับ 696 00:30:10,050 --> 00:30:12,420 ออกมาจากแถวและซื้ออุปกรณ์ใหม่ของคุณ 697 00:30:12,420 --> 00:30:18,070 คิดว่าไม่พอใจที่คนเหล่านี้จะเป็น ถ้าแอปเปิ้ลแทนสแต็คที่ใช้สำหรับ 698 00:30:18,070 --> 00:30:21,250 ตัวอย่างเช่นในการดำเนินการเลือก ขึ้นจากของเล่นใหม่ของคุณ 699 00:30:21,250 --> 00:30:24,310 ดังนั้นการรอคิวให้ความรู้สึกอย่างแน่นอนและ เราสามารถคิดของทุกประเภทของ 700 00:30:24,310 --> 00:30:27,480 โปรแกรมสมมุติสำหรับคิว โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการความเป็นธรรม 701 00:30:27,480 --> 00:30:30,040 ดังนั้นวิธีที่เราอาจจะใช้เหล่านี้ เป็นโครงสร้างข้อมูล? 702 00:30:30,040 --> 00:30:33,680 >> ผมเสนอว่าเราอาจจะ ต้องทำมันด้วยวิธีนี้ 703 00:30:33,680 --> 00:30:35,225 ดังนั้นฉันจะไปตอนนี้มีตัวเลข 704 00:30:35,225 --> 00:30:38,190 ดังนั้นเราจะให้มันง่ายและไม่ จำเป็นต้องพูดคุยในแง่ของถาด 705 00:30:38,190 --> 00:30:40,220 เพียงตัวเลขที่ผู้คนจากอากาศ 706 00:30:40,220 --> 00:30:43,760 ความจุเป็นไปได้อีกครั้งแก้ไข จำนวนของคนที่สามารถอยู่ใน 707 00:30:43,760 --> 00:30:46,900 บรรทัดนี้เป็นสามหรือ สิ่งอื่น ๆ มูลค่า 708 00:30:46,900 --> 00:30:50,760 >> แต่ผมเสนอว่าผมต้องติดตาม ไม่เพียง แต่ขนาดของ 709 00:30:50,760 --> 00:30:52,370 คิววิธีการหลายสิ่งที่อยู่ในนั้น 710 00:30:52,370 --> 00:30:56,310 ดังนั้นขนาดขนาดกำลังการผลิตในปัจจุบันคือ เป็นขนาดสูงสุด 711 00:30:56,310 --> 00:30:58,540 เพียงแค่อีกครั้งศัพท์ โดยการประชุม 712 00:30:58,540 --> 00:31:03,680 ฉันไม่จำเป็นต้อง int เพิ่มเติมภายในทำไม ของคิวที่จะติดตามคนที่อยู่ใน 713 00:31:03,680 --> 00:31:05,365 ด้านหน้าของสาย? 714 00:31:05,365 --> 00:31:07,930 715 00:31:07,930 --> 00:31:10,910 ฉันต้องทำในกรณีนี้ทำไม? 716 00:31:10,910 --> 00:31:14,750 717 00:31:14,750 --> 00:31:16,190 >> ด้วยวิธีการนี​​้เป็นภาพ จะเปลี่ยน? 718 00:31:16,190 --> 00:31:19,280 ผมอาจจะสามารถนำมาใช้มากที่สุด ของภาพนี้ 719 00:31:19,280 --> 00:31:21,480 ให้ฉันไปข้างหน้าและลบอะไรที่นี่ 720 00:31:21,480 --> 00:31:24,580 เราจะให้นี้เล็กน้อย ชื่อที่แตกต่างกันที่นี่ 721 00:31:24,580 --> 00:31:28,930 Let 's กำจัด 17 ให้ได้รับการกำจัด จาก 9 ให้ของได้รับกำจัดของ 3 722 00:31:28,930 --> 00:31:30,410 และขอเพิ่มอีกหนึ่งสิ่งอื่น ๆ 723 00:31:30,410 --> 00:31:34,710 ผมเสนอว่าผมจำเป็นที่จะต้องติดตาม ด้านหน้าของรายการซึ่งเป็นเพียง 724 00:31:34,710 --> 00:31:35,570 จะเป็น int เช่นกัน 725 00:31:35,570 --> 00:31:36,550 และเราจะให้มันง่าย 726 00:31:36,550 --> 00:31:37,740 ไม่มีรายการที่เชื่อมโยงสำหรับตอนนี้ 727 00:31:37,740 --> 00:31:40,900 >> เราจะยอมรับว่าเรากำลังจะ ชนขึ้นกับขีด จำกัด นี้ 728 00:31:40,900 --> 00:31:43,720 แต่สิ่งที่ฉันต้องการที่จะเห็น เกิดขึ้นในเวลานี้? 729 00:31:43,720 --> 00:31:47,240 ดังนั้นคิดว่าฉันไปข้างหน้าและเป็นคนแรก คนที่ขึ้นมาอยู่ในแถวและ 730 00:31:47,240 --> 00:31:48,560 มันเป็นหมายเลข 9 731 00:31:48,560 --> 00:31:49,680 เราจะมีลูกความเครียด 732 00:31:49,680 --> 00:31:51,330 ฉันสามารถขโมยพูดสองหรือสามคน? 733 00:31:51,330 --> 00:31:52,690 หนึ่งสองสาม? 734 00:31:52,690 --> 00:31:53,120 มาขึ้น 735 00:31:53,120 --> 00:31:56,022 ขวาจากด้านหน้าเพราะ เราจะทำให้เรื่องนี้อย่างใดอย่างหนึ่งอย่างรวดเร็ว 736 00:31:56,022 --> 00:31:59,415 >> แต่ละคุณคือตอนนี้ไปได้ เด็กชายแฟนในสายที่แอปเปิ้ล 737 00:31:59,415 --> 00:32:03,970 738 00:32:03,970 --> 00:32:06,210 คุณจะไม่ได้รับฮาร์ดแวร์แอปเปิ้ล ในตอนท้ายของเรื่องนี้แม้ว่า 739 00:32:06,210 --> 00:32:06,500 ทั้งหมดขวา 740 00:32:06,500 --> 00:32:09,430 ดังนั้นคุณหมายเลข 9 คุณ หมายเลข 17, หมายเลข 22 741 00:32:09,430 --> 00:32:12,130 เหล่านี้เป็นตัวเลขโดยพลการเช่น นักศึกษารหัสหรือ whatnot 742 00:32:12,130 --> 00:32:14,550 และในเพียงสักครู่ขอเริ่มต้น เพื่อเริ่มต้นการเพิ่มสิ่ง 743 00:32:14,550 --> 00:32:16,000 และฉันจะใช้คณะกรรมการที่นี่เวลานี้ 744 00:32:16,000 --> 00:32:19,570 >> ดังนั้นในกรณีนี้ผมได้เริ่มต้น ด้านหน้าที่จะเป็น - 745 00:32:19,570 --> 00:32:22,380 ที่จริงผมไม่ได้จริงๆดูแลสิ่งที่ ด้านหน้าเป็นเพราะขนาดเป็นศูนย์ 746 00:32:22,380 --> 00:32:24,480 ดังนั้นนี้อาจจะดีแค่ เป็นเครื่องหมายคำถาม 747 00:32:24,480 --> 00:32:26,170 เหล่านี้ทั้งหมดเครื่องหมายคำถาม 748 00:32:26,170 --> 00:32:29,880 ดังนั้นตอนนี้เราจะเริ่มต้นที่จะเห็นบางส่วนจริง คนแถวที่ร้านค้า 749 00:32:29,880 --> 00:32:33,320 >> ดังนั้นหากหมายเลข 9 คุณหนึ่งครั้งแรก มีที่ 5:00 ไปข้างหน้าและแถว, 750 00:32:33,320 --> 00:32:34,210 หรือคืนก่อ​​น 751 00:32:34,210 --> 00:32:34,580 ตกลง 752 00:32:34,580 --> 00:32:35,940 ดังนั้นตอนนี้อยู่ที่นี่ 9 753 00:32:35,940 --> 00:32:37,940 ดังนั้น 9 ในด้านหน้าของรายการ 754 00:32:37,940 --> 00:32:41,440 ดังนั้นฉันจะไปข้างหน้าและปรับปรุง ขนาดของข้อมูลในปัจจุบันนี้ 755 00:32:41,440 --> 00:32:44,740 โครงสร้างที่จะไม่เป็น 0 อีกต่อไป แต่เป็น 1 756 00:32:44,740 --> 00:32:47,630 ฉันจะใส่ที่ 9 ด้านหน้าของรายการ 757 00:32:47,630 --> 00:32:51,020 ให้ฉันไปข้างหน้าและสลับหน้าจอ เพื่อให้เราสามารถมองเห็นอดีตที่ผ่านมาเราได้ที่นี่ 758 00:32:51,020 --> 00:32:53,220 >> และตอนนี้ฉันทำในสิ่งที่ต้องการ ใส่ที่ด้านหน้า? 759 00:32:53,220 --> 00:32:56,240 ฉันจะติดตามว่า ด้านหน้าของคิวในขณะนี้ 760 00:32:56,240 --> 00:32:58,570 อยู่ที่ 0 สถานที่ 761 00:32:58,570 --> 00:33:00,510 เพราะสิ่งที่เป็นไปที่จะเกิดขึ้น? 762 00:33:00,510 --> 00:33:03,000 ดีสมมติว่าตอนนี้ฉัน enqueue 17 เช่นกัน 763 00:33:03,000 --> 00:33:04,510 การฟ้อนรำดังนั้นในบรรทัดที่มี 764 00:33:04,510 --> 00:33:07,060 และอีกครั้งที่จัดเรียงของประตูไป เก็บเป็นไปได้ที่นี่ 765 00:33:07,060 --> 00:33:08,700 ดังนั้นตอนนี้ฉันได้เพิ่ม 17 766 00:33:08,700 --> 00:33:10,810 และถึงแม้คนเหล่านี้มีการปิดกั้น หน้าจอที่ตกลง 767 00:33:10,810 --> 00:33:12,300 เพราะเราสามารถดูได้ที่นี่ 768 00:33:12,300 --> 00:33:12,910 ขอโทษ 769 00:33:12,910 --> 00:33:13,810 >> ผู้ชม: เราสามารถเคลื่อนย้าย - 770 00:33:13,810 --> 00:33:14,660 >> DAVID ลัน: ไม่มีที่ตกลง 771 00:33:14,660 --> 00:33:16,000 มันใหญ่ขึ้น 772 00:33:16,000 --> 00:33:18,580 ดังนั้น 17 คือตอนนี้ภายในของคิว 773 00:33:18,580 --> 00:33:21,332 ผมจำเป็นต้องปรับปรุงซึ่ง ฟิลด์ในขณะนี้แม้ว่า? 774 00:33:21,332 --> 00:33:23,210 ตกลงขนาดแน่นอน 775 00:33:23,210 --> 00:33:26,430 และวิธีการเกี่ยวกับด้านหน้า 776 00:33:26,430 --> 00:33:27,040 ตกลงไม่มี 777 00:33:27,040 --> 00:33:30,200 ด้านหน้าไม่ควรเปลี่ยนเพราะ ซึ่งแตกต่างจากสแต็คเรา 778 00:33:30,200 --> 00:33:31,370 ต้องการที่จะรักษาความเป็นธรรม 779 00:33:31,370 --> 00:33:35,150 ดังนั้นถ้า 9 มาในครั้งแรกที่เราต้องการ 9 จะออกเป็นครั้งแรกของสาย 780 00:33:35,150 --> 00:33:36,420 และเข้าไปในร้าน 781 00:33:36,420 --> 00:33:37,220 >> ในความเป็นจริงเราจะเห็นว่า 782 00:33:37,220 --> 00:33:42,235 ก่อนที่เราจะใส่ 22 ให้ ไปข้างหน้าและ dequeue 9 783 00:33:42,235 --> 00:33:42,970 ชื่ออะไรของคุณอีกครั้ง? 784 00:33:42,970 --> 00:33:43,680 >> ผู้ชม: เจค 785 00:33:43,680 --> 00:33:45,440 >> DAVID ลัน: เจคที่เกิดขึ้น จะ dequeued ขณะนี้ 786 00:33:45,440 --> 00:33:48,050 เพื่อให้คุณได้รับที่จะเดินเข้าไปในร้าน 787 00:33:48,050 --> 00:33:49,880 และแกล้งทำเป็นว่าเก็บ คือที่นั่น 788 00:33:49,880 --> 00:33:51,970 ดังนั้นตอนนี้สิ่งที่จำเป็น - dit-dit-dit! 789 00:33:51,970 --> 00:33:53,400 ความต้องการที่จะเกิดขึ้นอะไรอยู่ตอนนี้ 790 00:33:53,400 --> 00:33:54,490 การตัดสินใจการออกแบบ 791 00:33:54,490 --> 00:33:56,825 ดังนั้นไม่สัญชาตญาณที่ไม่ดี แต่ - ชื่ออะไรของคุณอีกครั้ง? 792 00:33:56,825 --> 00:33:57,090 >> ผู้ชม: เดวิด 793 00:33:57,090 --> 00:33:57,500 >> DAVID ลัน: เดวิด 794 00:33:57,500 --> 00:33:58,810 ดังนั้นสิ่งที่ไม่เดวิดทำอะไร? 795 00:33:58,810 --> 00:34:02,590 เขากำลังพยายามที่จะเรียงลำดับของการแก้ไขข้อมูล โครงสร้างและย้ายจากที่ตั้งของเขา 796 00:34:02,590 --> 00:34:04,100 ในสถานที่ที่อดีตของเจค 797 00:34:04,100 --> 00:34:06,740 และที่ว่าดีถ้าเราเต็มใจ ที่จะยอมรับว่าเป็น 798 00:34:06,740 --> 00:34:08,199 รายละเอียดการปฏิบัติ 799 00:34:08,199 --> 00:34:11,100 แต่ก่อนอื่นขอปรับปรุงข้อมูล โครงสร้างก่อนที่เราจะทำอย่างนั้น 800 00:34:11,100 --> 00:34:14,139 เพราะฉันไม่ชอบความคิดของทุกคน คนขยับในสายนี้ 801 00:34:14,139 --> 00:34:17,360 >> มันไม่ใช่เรื่องใหญ่ถ้าดาวิดด้วย ขั้นตอนที่หนึ่ง แต่อีกครั้งคิดว่ากลับไป 802 00:34:17,360 --> 00:34:20,360 เมื่อเราได้มีแปดอาสาสมัคร เวทีและที่เราเคยทำเช่นการแทรก 803 00:34:20,360 --> 00:34:22,600 การจัดเรียงที่เราต้องเริ่มต้น ย้ายทุกคนรอบตัว 804 00:34:22,600 --> 00:34:23,790 ที่ได้มีราคาแพงใช่มั้ย? 805 00:34:23,790 --> 00:34:28,330 ที่ทำให้ฉันประจบประแจงเกี่ยวกับ O ใหญ่ ของ n O ใหญ่ของ n ยืดอีกครั้ง 806 00:34:28,330 --> 00:34:30,650 มันไม่ได้เป็นความรู้สึกเหมือน ผลในอุดมคติ 807 00:34:30,650 --> 00:34:32,080 >> ดังนั้นขอเพียงแค่การปรับปรุงนี้ 808 00:34:32,080 --> 00:34:35,120 ดังนั้นขนาดของคิว จะไม่มีอีกต่อ 2 809 00:34:35,120 --> 00:34:37,090 ก็ตอนนี้เพียงแค่ 1 810 00:34:37,090 --> 00:34:40,360 แต่ตอนนี้ผมสามารถปรับปรุงบางสิ่งบางอย่าง ฉันไม่ได้ปรับปรุงมาก่อน 811 00:34:40,360 --> 00:34:41,130 ด้านหน้าของรายการ 812 00:34:41,130 --> 00:34:45,420 ฉันสามารถบอกตำแหน่งที่ 1? 813 00:34:45,420 --> 00:34:49,770 ดังนั้นตอนนี้เรามีค่าขยะที่นี่ มูลค่าขยะที่นี่และเดวิดใน 814 00:34:49,770 --> 00:34:51,469 ตรงกลางของขยะนี้ 815 00:34:51,469 --> 00:34:54,980 แต่โครงสร้างข้อมูล ยังคงเป็นเหมือนเดิม 816 00:34:54,980 --> 00:34:58,540 >> และในความเป็นจริงผมไม่จำเป็นที่จะต้อง เปลี่ยนหมายเลขอดีตของเจค 817 00:34:58,540 --> 00:35:00,460 9 เพราะใครจะสน 818 00:35:00,460 --> 00:35:04,470 ผมมีข้อมูลที่เพียงพอในขณะนี้ ขนาดที่ฉันรู้ว่ามีหนึ่งคน 819 00:35:04,470 --> 00:35:05,030 คิวนี้ 820 00:35:05,030 --> 00:35:08,340 และฉันรู้ว่าคนคนนั้น อยู่ที่สถานที่ 1 ไม่ได้ 0 821 00:35:08,340 --> 00:35:09,760 ฉันไม่ได้นับ 822 00:35:09,760 --> 00:35:11,300 So 1 เช่นกัน 823 00:35:11,300 --> 00:35:13,410 ดังนั้นโครงสร้างข้อมูลที่ยังคงตกลง 824 00:35:13,410 --> 00:35:14,330 >> ดีสิ่งที่เกิดขึ้นต่อไปหรือไม่ 825 00:35:14,330 --> 00:35:15,010 enqueue Let 's - 826 00:35:15,010 --> 00:35:15,370 คุณชื่ออะไร? 827 00:35:15,370 --> 00:35:16,160 >> ผู้ชม: Callen 828 00:35:16,160 --> 00:35:16,580 >> DAVID ลัน: Callen 829 00:35:16,580 --> 00:35:20,770 Let 's enqueue Callen และ 22 ขณะนี้อยู่ในคิว 830 00:35:20,770 --> 00:35:22,300 ดังนั้นตอนนี้สิ่งที่เปลี่ยนที่นี่? 831 00:35:22,300 --> 00:35:24,380 ด้านหน้าจะไม่ไป เปลี่ยนแปลงอย่างเห็นได้ชัด 832 00:35:24,380 --> 00:35:27,160 ขนาดจะเปลี่ยนเป็น 2 อีกครั้ง 833 00:35:27,160 --> 00:35:31,590 22 และจบลงที่นี่ 9 ยังคงเป็นปัจจุบัน แต่มันได้อย่างมีประสิทธิภาพ 834 00:35:31,590 --> 00:35:32,600 ค่าขยะในขณะนี้ 835 00:35:32,600 --> 00:35:35,910 มันเป็นเพียงเศษเล็กเศษน้อยของอดีตเจค 836 00:35:35,910 --> 00:35:39,200 >> ดังนั้นตอนนี้สิ่งที่เกิดขึ้นถ้า ผม dequeue ดาวิด 837 00:35:39,200 --> 00:35:41,560 การดำเนินการที่ผ่านมา dequeue เดวิด 838 00:35:41,560 --> 00:35:46,070 เราสามารถเปลี่ยน แต่ผมเสนอขอ ทำตามที่ทำงานน้อยที่สุดเท่าที่ทำได้ 839 00:35:46,070 --> 00:35:50,280 ตอนนี้โครงสร้างข้อมูลของฉันไป กลับมาอยู่ในขนาด 2-1 840 00:35:50,280 --> 00:35:53,730 แต่ด้านหน้าของคิว ตอนนี้กลายเป็น 2 841 00:35:53,730 --> 00:35:56,640 ฉันไม่จำเป็นต้องเปลี่ยนตัวเลขเหล่านี้ เพียง แต่เพราะพวกเขากำลัง 842 00:35:56,640 --> 00:35:58,230 เพียงแค่ค่าขยะ 843 00:35:58,230 --> 00:35:59,720 >> แต่ตอนนี้สิ่งที่เกิดขึ้น? 844 00:35:59,720 --> 00:36:03,280 สมมติว่าฉัน enqueue ตัวเอง, 26? 845 00:36:03,280 --> 00:36:05,890 ฉันรู้สึกเหมือนฉันเป็นส่วนหนึ่งของที่นี่ 846 00:36:05,890 --> 00:36:06,890 ดังนั้นฉันถูก enqueued 847 00:36:06,890 --> 00:36:08,760 ดังนั้นผมชนิดเป็นของที่นี่ 848 00:36:08,760 --> 00:36:11,300 และถึงแม้คุณไม่ได้ค่อนข้าง ขอขอบคุณที่นี้สายตาบนเวที 849 00:36:11,300 --> 00:36:15,075 เพราะเรามีมากมายห้องพักผมควร ไม่สามารถยืนอยู่ที่นี่ทำไม? 850 00:36:15,075 --> 00:36:16,290 >> ผู้ชม: คุณกำลังออกไปจากตัว 851 00:36:16,290 --> 00:36:16,370 >> DAVID ลันขวา: 852 00:36:16,370 --> 00:36:16,940 ฉันออกไปจากตัว 853 00:36:16,940 --> 00:36:19,330 ผมเคยจัดทำดัชนีเกิน ขอบเขตของอาร์เรย์นี้ 854 00:36:19,330 --> 00:36:23,420 ผมควรจะอยู่ในหนึ่งใน สามสถานที่ที่เป็นไปได้ 855 00:36:23,420 --> 00:36:25,150 ตอนนี้เป็นธรรมชาติมากที่สุดจะไปที่ไหน 856 00:36:25,150 --> 00:36:27,760 ผมเสนอเรา leveraged หนึ่งสัปดาห์เคล็ดลับ 857 00:36:27,760 --> 00:36:30,150 ประกอบ Mod ร้อยละ 858 00:36:30,150 --> 00:36:36,850 เพราะฉันยืนอยู่ที่ทางเทคนิค สถานที่ตั้ง 3 แต่ฉันกำลังเล่น 3 859 00:36:36,850 --> 00:36:40,250 ดังนั้น 3, เครื่องหมายเปอร์เซ็นต์, 3 - 860 00:36:40,250 --> 00:36:40,970 กำลังการผลิต 3 861 00:36:40,970 --> 00:36:41,720 ว่าคืออะไร? 862 00:36:41,720 --> 00:36:43,700 ส่วนที่เหลือคืออะไรเมื่อ คุณแบ่ง 3 โดย 3 863 00:36:43,700 --> 00:36:44,070 0 864 00:36:44,070 --> 00:36:48,140 >> ดังนั้นที่ทำให้ฉันถูกเจคคือ ซึ่งเป็นจริงดี 865 00:36:48,140 --> 00:36:50,370 ดังนั้นตอนนี้การดำเนินการ ของสิ่งนี้ไป 866 00:36:50,370 --> 00:36:51,250 เป็นบิตของปวดหัว 867 00:36:51,250 --> 00:36:53,740 มันจริงๆเพียงหนึ่งบรรทัด อาการปวดหัวของรหัส 868 00:36:53,740 --> 00:36:56,580 แต่อย่างน้อยตอนนี้มีขยะของ ค่าที่นี่ แต่มีสองคน 869 00:36:56,580 --> 00:36:57,910 ints ถูกต้องตามกฎหมายที่นี่ 870 00:36:57,910 --> 00:37:04,160 และผมก็อ้างว่าตอนนี้เราได้ทำ สิ่งที่เราต้องทำตราบใดที่ 871 00:37:04,160 --> 00:37:08,600 เราเปลี่ยนสิ่งที่เจค ค่าจะเป็น 26 872 00:37:08,600 --> 00:37:12,110 >> ขณะนี้เรามีข้อมูลที่เพียงพอยังคง เพื่อรักษาความสมบูรณ์ 873 00:37:12,110 --> 00:37:13,060 ของโครงสร้างข้อมูลนี้ 874 00:37:13,060 --> 00:37:17,160 เรายังคงชนิดของออกจากโชคเมื่อเรา ต้องการแทรกสี่หรือมากกว่าทั้งหมด 875 00:37:17,160 --> 00:37:20,740 องค์ประกอบ แต่ฉันสามารถอย่างน้อยทำให้สวย ประสิทธิภาพในการใช้อย่างต่อเนื่องนี้ 876 00:37:20,740 --> 00:37:21,740 เวลาในความเป็นจริง 877 00:37:21,740 --> 00:37:27,150 ฉันไม่ต้องกังวลเกี่ยวกับการขยับ ทุกคนเป็นความชอบเดวิด 878 00:37:27,150 --> 00:37:30,816 >> คำถามใด ๆ เกี่ยวกับสแต็ค, หรือคิวนี้? 879 00:37:30,816 --> 00:37:32,184 >> ผู้ชม: คือเหตุผลว่าทำไม ขนาดที่คุณต้องการเพื่อให้คุณทราบ 880 00:37:32,184 --> 00:37:34,010 ที่จะมีคนคนหนึ่ง? 881 00:37:34,010 --> 00:37:34,770 >> DAVID ลัน: ว่า 882 00:37:34,770 --> 00:37:38,230 ฉันจำเป็นต้องทราบขนาดของอาร์เรย์ เพราะผมจำเป็นต้องรู้ว่าวิธีการ 883 00:37:38,230 --> 00:37:41,940 หลายค่าเหล่านี้ถูกต้องตามกฎหมาย และเพื่อที่ฉันสามารถหาที่ที่จะใส่ 884 00:37:41,940 --> 00:37:42,800 คนถัดไป 885 00:37:42,800 --> 00:37:43,300 อย่างแน่นอน 886 00:37:43,300 --> 00:37:44,580 ขนาดคือ - 887 00:37:44,580 --> 00:37:46,360 ที่จริงเราไม่ได้ปรับปรุงนี้ยัง 888 00:37:46,360 --> 00:37:48,380 ฉันจะเพิ่มตัวเองที่ 26 889 00:37:48,380 --> 00:37:51,760 ขนาดตอนนี้ไม่ได้ 1 แต่ 2 890 00:37:51,760 --> 00:37:57,780 ดังนั้นตอนนี้แน่นอนช่วยให้ผมหา หัวของรายการซึ่งไม่ได้เป็น 0 ไม่ 891 00:37:57,780 --> 00:37:59,250 1 แต่คือ 2 892 00:37:59,250 --> 00:38:01,665 ด้านหน้าของรายการ เป็นที่แน่นอนจำนวน 22 893 00:38:01,665 --> 00:38:05,120 เพราะเขาเดินเข้ามาในครั้งแรกดังนั้นเขาจึงควร ได้รับอนุญาตให้เข้าไปในร้านก่อนที่ฉัน 894 00:38:05,120 --> 00:38:08,780 แม้ว่าสายตาผมยืนอยู่ ใกล้ชิดในการจัดเก็บ 895 00:38:08,780 --> 00:38:09,220 >> ขวาทั้งหมด? 896 00:38:09,220 --> 00:38:12,410 รอบปรบมือสำหรับคนเหล่านี้ และเราจะให้พวกเขาออกจากที่นั่น 897 00:38:12,410 --> 00:38:17,090 >> [APPLAUSE] 898 00:38:17,090 --> 00:38:18,150 >> DAVID ลัน: ฉันจะให้ คุณเก็บถาด 899 00:38:18,150 --> 00:38:20,760 เราจะได้เห็นว่าเกิดอะไรขึ้นถ้า ที่คุณต้องการ แต่อาจจะไม่ 900 00:38:20,760 --> 00:38:21,590 ทั้งหมดขวา 901 00:38:21,590 --> 00:38:25,380 ดังนั้นสิ่งที่ตอนนี้ไม่ปล่อยให้เรา? 902 00:38:25,380 --> 00:38:28,900 ดีให้ฉันเสนอว่ามี ไม่กี่โครงสร้างข้อมูลอื่น ๆ ที่เราจะทำได้ 903 00:38:28,900 --> 00:38:33,810 เริ่มต้นการเพิ่มชุดเครื่องมือของเราที่จะ จริงจะค่อนข้างค่อนข้างที่เกี่ยวข้องเช่น 904 00:38:33,810 --> 00:38:35,270 เราดำน้ำในสิ่งที่เว็บ 905 00:38:35,270 --> 00:38:38,150 อีกครั้งซึ่งมีชนิดของการเชื่อมต่อบางอย่าง กับต้นไม้ในรูปแบบของ 906 00:38:38,150 --> 00:38:40,550 สิ่งที่เรียกว่า DOM เอกสาร, รูปแบบวัตถุ 907 00:38:40,550 --> 00:38:42,370 แต่เราจะดูรายละเอียดของ ก่อนที่จะยาว 908 00:38:42,370 --> 00:38:46,260 >> ผมขอเสนอว่าเรา definitionally เรียกต้นไม้ในขณะนี้สิ่งที่คุณอาจรู้ว่าเป็น 909 00:38:46,260 --> 00:38:48,820 มากขึ้นของต้นไม้ครอบครัวที่คุณ มีบรรพบุรุษที่บาง 910 00:38:48,820 --> 00:38:49,790 รากของต้นไม้ 911 00:38:49,790 --> 00:38:54,480 ปูชนียบุคคลโบราณหรือที่ ส่วนบนสุดของต้นไม้ 912 00:38:54,480 --> 00:38:56,700 โดยไม่มีคู่สมรสในกรณีนี้ของพวกเขา 913 00:38:56,700 --> 00:39:00,940 แต่ตอนนี้เรามีสิ่งที่เราจะเรียก เด็กซึ่งเป็นโหนดที่แขวน 914 00:39:00,940 --> 00:39:05,480 เด็กออกทางซ้ายหรือทางขวาเด็ก, ลูกศรเป็นภาพที่นี่ 915 00:39:05,480 --> 00:39:10,490 >> ในคำอื่น ๆ ในโครงสร้างข้อมูลต้นไม้ ในคอมพิวเตอร์, ต้นไม้มีศูนย์ 916 00:39:10,490 --> 00:39:11,480 โหนดหรือมากกว่า 917 00:39:11,480 --> 00:39:13,500 ถ้ามันมีอย่างน้อยหนึ่งโหนด ที่เรียกว่าราก 918 00:39:13,500 --> 00:39:15,700 มันเป็นสิ่งที่มองเห็นว่า เราวาดที่ด้านบน 919 00:39:15,700 --> 00:39:20,280 และโหนดที่เช่นโหนดอื่น ๆ สามารถ มีศูนย์หนึ่งหรือสองหรือสาม 920 00:39:20,280 --> 00:39:23,600 หรือ แต่เด็กหลายคน โครงสร้างข้อมูลสนับสนุน 921 00:39:23,600 --> 00:39:29,150 ในกรณีนี้รากของการจัดเก็บ หนึ่งค่ามีลูกสองคน, 2 และ 3, 922 00:39:29,150 --> 00:39:33,020 ดังนั้นเราจึงมักเรียก 2 ด้านซ้าย ของเด็กและ 3 เด็กขวา 923 00:39:33,020 --> 00:39:36,940 >> และจากนั้นเมื่อเราได้รับลงไปที่ 5, 6, และ 7, 6 อาจเรียกได้ว่าเด็กกลาง 924 00:39:36,940 --> 00:39:38,940 ถ้าคุณมีลูกสี่คน, ที่จะได้รับสับสน 925 00:39:38,940 --> 00:39:42,260 ดังนั้นเราจึงหยุดการใช้ชนิดที่ ทางลัดด้วยวาจา 926 00:39:42,260 --> 00:39:44,580 แต่มันจริงๆเพียงต้นไม้ครอบครัว 927 00:39:44,580 --> 00:39:48,880 และใบที่นี่มีโหนที่ ตัวเองไม่มีลูก 928 00:39:48,880 --> 00:39:52,540 พวกเขาแขวนออกด้านล่างของต้นไม้ 929 00:39:52,540 --> 00:39:56,940 >> ดังนั้นวิธีที่เราอาจจะใช้ต้นไม้ที่ มีเพียงเด็กสองคนสุด? 930 00:39:56,940 --> 00:39:58,410 เราจะเรียกว่าต้นไม้ไบนารี 931 00:39:58,410 --> 00:40:00,960 Bi อีกความหมายสองในการนี​​้ กรณีเช่นกับไบนารี 932 00:40:00,960 --> 00:40:04,830 และดังนั้นจึงสามารถมีศูนย์หนึ่ง หรือเด็กสองคนสูงสุด 933 00:40:04,830 --> 00:40:08,650 >> ผมเสนอว่าเราใช้โหนด สำหรับงานโครงสร้างที่มี int n ที่ 934 00:40:08,650 --> 00:40:11,910 แล้วสองตัวชี้หนึ่งที่เรียกว่า ซ้ายขวาหนึ่งที่เรียกว่า 935 00:40:11,910 --> 00:40:14,830 แต่ผู้ที่มีดีเพียงแค่ การประชุมโดยพลการ 936 00:40:14,830 --> 00:40:18,170 และเป็นเรื่องดีที่ในขณะนี้โดยเฉพาะอย่างยิ่งถ้าคุณ ชนิดของการต่อสู้กับแนวคิด 937 00:40:18,170 --> 00:40:21,300 เรียกซ้ำตัวเองหรือคิดว่ามันไม่ได้ จริงๆวิธีการแก้อะไรเลย, 938 00:40:21,300 --> 00:40:23,120 โดยเฉพาะอย่างยิ่งถ้าคุณสามารถ วิ่งออกจากหน่วยความจำ 939 00:40:23,120 --> 00:40:26,600 ตอนนี้เรากำลังพูดถึงเกี่ยวกับข้อมูล โครงสร้างและขั้นตอนวิธีที่ช่วยให้ 940 00:40:26,600 --> 00:40:31,030 เราสามารถสำรวจและจัดการกับพวกเขา ปรากฎว่าเรียกซ้ำตัวเองกลับมาใน 941 00:40:31,030 --> 00:40:34,240 อื่น ๆ อีกมากมายที่น่าสนใจ ถ้าไม่ได้เป็นวิธีที่สวยงาม 942 00:40:34,240 --> 00:40:38,670 >> ดังนั้นผมเสนอนี้คือการดำเนินการ ของฟังก์ชั่นค้นหา 943 00:40:38,670 --> 00:40:39,870 ให้สองปัจจัยการผลิต - 944 00:40:39,870 --> 00:40:41,570 ดังนั้นคิดว่านี้เป็นกล่องสีดำ 945 00:40:41,570 --> 00:40:46,560 ให้สองปัจจัยการผลิต, n, int และ ตัวชี้ไปยังต้นไม้ตัวชี้ไปยัง 946 00:40:46,560 --> 00:40:50,020 โหนดหรือจริงๆรากของต้นไม้ที่ผม อ้างว่าฟังก์ชั่นนี้สามารถกลับ 947 00:40:50,020 --> 00:40:53,530 จริงหรือเท็จที่ n ค่า ภายในของต้นไม้ต้นนี้คือ 948 00:40:53,530 --> 00:40:55,210 >> อยู่ภายในของกล่องดำนี้คืออะไร? 949 00:40:55,210 --> 00:40:57,440 ดีสี่สาขา 950 00:40:57,440 --> 00:40:58,385 ครั้งแรกที่ตรวจสอบเพียง 951 00:40:58,385 --> 00:41:00,490 ถ้าต้นไม้เป็นโมฆะเพียงกลับเท็จ 952 00:41:00,490 --> 00:41:04,580 หากมีโหนดไม่มี n ไม่ได้, มีจำนวนไม่เพียงกลับเท็จ 953 00:41:04,580 --> 00:41:12,330 ถ้าแม้ว่า, n, ค่าที่คุณกำลังมองหา สำหรับน้อยกว่าต้นไม้ศร n และ 954 00:41:12,330 --> 00:41:15,180 เพียงเพื่อให้ชัดเจนสิ่งที่ไม่ได้หมายถึงเมื่อ ผมเขียนต้นไม้แล้วลูกศร 955 00:41:15,180 --> 00:41:18,150 สัญกรณ์, n? 956 00:41:18,150 --> 00:41:18,690 อย่างแน่นอน 957 00:41:18,690 --> 00:41:21,970 ก็หมายความว่า dereference ตัวชี้ที่เรียกว่าต้นไม้ 958 00:41:21,970 --> 00:41:26,750 ไปที่นั่นและจากนั้นได้รับภายในที่ โหนดและสาขาของตนที่เรียกว่า n 959 00:41:26,750 --> 00:41:30,810 แล้วเปรียบเทียบ n จริงที่เป็น ผ่านเข้าไปค้นหากับมัน 960 00:41:30,810 --> 00:41:35,390 >> ดังนั้นถ้า n มีค่าน้อยกว่าค่า n ในโหนดตัวเองดี 961 00:41:35,390 --> 00:41:36,720 ว่าหมายความว่าอย่างไร 962 00:41:36,720 --> 00:41:40,690 ซึ่งหมายความว่าไม่มีอะไรได้อย่างรวดเร็วก่อน 963 00:41:40,690 --> 00:41:40,900 ใช่ไหม? 964 00:41:40,900 --> 00:41:45,560 เช่นเดียวกับเมื่อคุณมี array ของ ค่าคุณอาจชอบที่จะใช้เลขฐานสอง 965 00:41:45,560 --> 00:41:48,290 ค้นหาเป็นรูปแบบของการหาร และพิชิต 966 00:41:48,290 --> 00:41:51,790 แต่เราทำในสิ่งที่สมมติฐานที่จำเป็นต้องทำ สำหรับการค้นหาแบบไบนารีไปทำงานที่ทั้งหมด 967 00:41:51,790 --> 00:41:54,510 ในสมุดโทรศัพท์และ ตัวอย่างก่อนหน้านี้? 968 00:41:54,510 --> 00:41:55,530 >> วิธีการที่จะแยก 969 00:41:55,530 --> 00:41:59,490 เพื่อขอปรับแต่งความหมายของต้นไม้ ที่นี่จะไม่เป็นเพียงแค่ต้นไม้ซึ่งสามารถ 970 00:41:59,490 --> 00:42:00,880 มีจำนวนของเด็ก ๆ 971 00:42:00,880 --> 00:42:04,700 ไม่ได้เป็นเพียงต้นไม้ไบนารีซึ่งสามารถ มี 0, 1, 2 หรือสูงสุด 972 00:42:04,700 --> 00:42:09,700 แต่ในขณะที่ต้นไม้ค้นหาไบนารีหรือ BST, ซึ่งเป็นเพียงวิธีแฟนซีของบอกว่า 973 00:42:09,700 --> 00:42:15,430 ต้นไม้ไบนารีดังกล่าวว่าโหนดทุกคน เด็กซ้ายถ้าปัจจุบันคือ 974 00:42:15,430 --> 00:42:16,830 น้อยกว่าโหนด 975 00:42:16,830 --> 00:42:20,170 และเด็กขวาของโหนดทุก ถ้าปัจจุบันเป็นใหญ่ 976 00:42:20,170 --> 00:42:21,740 กว่าโหนดตัวเอง 977 00:42:21,740 --> 00:42:25,200 >> ดังนั้นในคำอื่น ๆ ถ้าคุณมีการวาด ออกต้นไม้ทั้งหมดของจำนวนที่มีค่า 978 00:42:25,200 --> 00:42:30,620 มีความสมดุลอย่างรอบคอบเช่นนี้เพื่อที่ว่าถ้า คุณมี 55 เป็นราก, 33 สามารถไป 979 00:42:30,620 --> 00:42:33,090 ไปทางซ้ายเพราะมันน้อยกว่า 55 980 00:42:33,090 --> 00:42:36,430 77 สามารถไปทางขวาเพราะ มันยิ่งใหญ่กว่า 55 981 00:42:36,430 --> 00:42:40,750 แต่ตอนนี้สังเกตเห็นความหมายเดียวกัน มันเป็น recursive นิยามวาจา 982 00:42:40,750 --> 00:42:42,600 มีที่จะใช้สำหรับ 33 983 00:42:42,600 --> 00:42:47,610 เด็กซ้าย 33 ของต้องน้อยกว่ามัน และเด็กขวาของ 33, 44, ต้อง 984 00:42:47,610 --> 00:42:48,580 มีขนาดใหญ่กว่ามัน 985 00:42:48,580 --> 00:42:51,670 >> ดังนั้นนี่คือต้นไม้ค้นหาแบบไบนารีและ ผมเสนอใช้นิด ๆ หน่อย ๆ 986 00:42:51,670 --> 00:42:53,910 เรียกซ้ำตัวเองตอนนี้เราสามารถหา n 987 00:42:53,910 --> 00:42:59,160 ดังนั้นถ้า n คือ n น้อยกว่าค่าที่ โหนดปัจจุบันผมจะไป 988 00:42:59,160 --> 00:43:04,090 ข้างหน้าและเรือท้องแบนเพื่อที่จะพูดและเพียง กลับสิ่งที่เป็นคำตอบของ 989 00:43:04,090 --> 00:43:08,470 ค้นหา n เมื่อ เด็กซ้ายของต้นไม้ 990 00:43:08,470 --> 00:43:11,370 แจ้งให้ทราบอีกครั้งงานนี้จะเป็นเพียงแค่ คาดว่าจะเป็นดาวโหนด 991 00:43:11,370 --> 00:43:12,780 ตัวชี้ไปยังโหนด 992 00:43:12,780 --> 00:43:17,360 ดังนั้นแน่นอนผมก็สามารถทำต้นไม้ ลูกศรซ้ายซึ่งจะนำไปสู่ 993 00:43:17,360 --> 00:43:18,400 ฉันไปยังโหนดอื่น 994 00:43:18,400 --> 00:43:19,480 แต่โหนดที่คืออะไร? 995 00:43:19,480 --> 00:43:22,820 >> ดีตามประกาศนี้ ด้านซ้ายเป็นเพียงตัวชี้เพื่อที่ว่าเพียงแค่ 996 00:43:22,820 --> 00:43:27,090 หมายความว่าผมผ่านไปฟังก์ชันการค้นหา ตัวชี้ที่แตกต่างกันคือ 997 00:43:27,090 --> 00:43:30,750 หนึ่งที่แสดงถึง ต้นไม้เด็กซ้ายของฉัน 998 00:43:30,750 --> 00:43:36,040 ดังนั้นในกรณีนี้ชี้ถึง 33 ถ้า นี้คือตัวอย่างใส่ของเราในขณะเดียวกันถ้า 999 00:43:36,040 --> 00:43:40,740 n มากกว่า n มูลค่าที่ โหนดปัจจุบันในต้นไม้แล้วผม 1000 00:43:40,740 --> 00:43:43,370 จะไปข้างหน้าและเรือท้องแบนในอื่น ๆ ทิศทางและเพียงแค่พูดว่าผมทำไม่ได้ 1001 00:43:43,370 --> 00:43:47,280 ทราบว่า n ค่านี้ในต้นไม้, แต่ฉันรู้ว่ามันคือมันลงของฉัน 1002 00:43:47,280 --> 00:43:49,090 สาขาขวาเพื่อที่จะพูด 1003 00:43:49,090 --> 00:43:53,120 เพื่อให้ฉันโทร recursively ค้นหา n ผ่านอีกครั้ง แต่ผ่านใน 1004 00:43:53,120 --> 00:43:54,580 ตัวชี้ไปที่เด็กขวาของฉัน 1005 00:43:54,580 --> 00:44:00,020 >> ในคำอื่น ๆ ถ้าฉันปัจจุบันอยู่ที่ 55 และฉันกำลังมองหา 99, ฉันรู้ว่า 99 1006 00:44:00,020 --> 00:44:04,270 มีค่ามากกว่า 55 ดังนั้นเช่นเดียวกับผมฉีก สัปดาห์ที่สมุดโทรศัพท์ที่ผ่านมาและเรา 1007 00:44:04,270 --> 00:44:07,140 ไปขวาในทำนองเดียวกันเราเป็น จะไปที่นี่ 1008 00:44:07,140 --> 00:44:11,960 และฉันไม่ทราบว่าเป็นที่ด้านขวาของฉัน เด็กและยังไม่ได้ 77 จะมี แต่ 1009 00:44:11,960 --> 00:44:13,210 ฉันรู้ว่ามันไปในทิศทางนั้น 1010 00:44:13,210 --> 00:44:18,770 ดังนั้นผมจึงเรียกค้นหาเด็กขวาของฉัน, 77, และปล่อยให้ร่างการค้นหาออกมาจาก 1011 00:44:18,770 --> 00:44:24,950 มีถ้า 99 ในกฎเกณฑ์นี้ ตัวอย่างที่เป็นจริงมี 1012 00:44:24,950 --> 00:44:26,900 >> อื่นกรณีสุดท้ายคืออะไร 1013 00:44:26,900 --> 00:44:28,620 ถ้าต้นไม้เป็นโมฆะกรณีหนึ่งคือ 1014 00:44:28,620 --> 00:44:31,890 ถ้า n มีค่าน้อยกว่าในปัจจุบันของโหนด มูลค่าเป็นอีกกรณีหนึ่ง 1015 00:44:31,890 --> 00:44:35,120 ถ้า n มีค่ามากกว่าปัจจุบัน ค่าของโหนดเป็นกรณีที่สาม 1016 00:44:35,120 --> 00:44:38,250 กรณีที่สี่และสุดท้ายคืออะไร? 1017 00:44:38,250 --> 00:44:39,480 ผมคิดว่าเรากำลังออกจากกรณีขวา? 1018 00:44:39,480 --> 00:44:44,690 มันต้องเป็นที่ n คือใน โหนดปัจจุบันว่าฉันเมื่อ 1019 00:44:44,690 --> 00:44:49,640 >> ดังนั้นถ้าฉันกำลังค้นหา 55 ที่จุดนี้ ในเรื่องสาขาที่ 1020 00:44:49,640 --> 00:44:51,780 ต้นไม้จะกลับมาจริง 1021 00:44:51,780 --> 00:44:55,380 ดังนั้นสิ่งที่น่าสนใจที่นี่เป็นที่ที่เรา จริงซึ่งแตกต่างจากสัปดาห์ที่ผ่านมาชนิดที่เรา 1022 00:44:55,380 --> 00:44:56,740 ของมีสองกรณีฐาน 1023 00:44:56,740 --> 00:44:58,300 และพวกเขาจะได้ไม่ต้อง เป็นสิ่งที่ด้านบน 1024 00:44:58,300 --> 00:45:01,390 ด้านบนเป็นกรณีฐานเพราะถ้า ต้นไม้เป็นโมฆะมีอะไรจะทำอะไร 1025 00:45:01,390 --> 00:45:03,410 เพียงแค่กลับยากรหัส ค่าของเท็จ 1026 00:45:03,410 --> 00:45:07,400 >> สาขาล่างคือการจัดเรียงของ เริ่มต้นด้วยเหตุนี้ถ้าเราได้รับการตรวจสอบ 1027 00:45:07,400 --> 00:45:11,550 โมฆะเราได้ตรวจสอบถ้ามันควรจะเป็น ทิ้งไว้ แต่มันไม่ควรจะเป็นเราได้ 1028 00:45:11,550 --> 00:45:14,640 การตรวจสอบถ้ามันควรจะเป็นที่ถูกต้อง แต่มัน ไม่ควรจะเป็นอย่างเห็นได้ชัดก็จะต้องมี 1029 00:45:14,640 --> 00:45:15,870 ขวาว่าเราอยู่ที่ไหน 1030 00:45:15,870 --> 00:45:16,780 กรณีที่ฐานของ 1031 00:45:16,780 --> 00:45:19,920 ดังนั้นจึงมีสองกรณี recursive ของ แซนวิชที่นั่นในกลาง 1032 00:45:19,920 --> 00:45:21,630 แต่ฉันจะได้เขียน นี้ในลำดับใด ๆ 1033 00:45:21,630 --> 00:45:24,520 ผมแค่คิดว่ามันชนิดของความรู้สึกที่เป็นธรรมชาติ ตรวจสอบก่อนสำหรับข้อผิดพลาดที่เป็นไปได้ 1034 00:45:24,520 --> 00:45:28,340 จากนั้นตรวจสอบที่เหลือจากนั้นตรวจสอบที่ถูกต้องแล้ว สมมติว่าคุณกำลังที่โหนด 1035 00:45:28,340 --> 00:45:30,630 คุณจริงกำลังมองหา 1036 00:45:30,630 --> 00:45:36,240 >> ดังนั้นทำไมนี้อาจจะมีประโยชน์? 1037 00:45:36,240 --> 00:45:37,910 ดังนั้นมันจะเปิดออก - 1038 00:45:37,910 --> 00:45:42,110 และแจ้งให้เราข้ามไปยังทีเซอร์ ที่นี่ที่อยู่ในเว็บ 1039 00:45:42,110 --> 00:45:44,920 เรากำลังจะเริ่มต้นใช้ไม่ได้ ภาษาการเขียนโปรแกรมในตอนแรก แต่ 1040 00:45:44,920 --> 00:45:46,030 ภาษามาร์กอัป 1041 00:45:46,030 --> 00:45:48,740 ภาษามาร์กอัปเป็นหนึ่งที่ ในทำนองเดียวกันการเขียนโปรแกรม 1042 00:45:48,740 --> 00:45:51,715 ภาษา แต่มันก็ไม่ได้ให้คุณ ความสามารถในการแสดงตัวเองมีเหตุผล 1043 00:45:51,715 --> 00:45:55,070 มันจะช่วยให้คุณมีความสามารถในการ แสดงตัวเองโครงสร้าง 1044 00:45:55,070 --> 00:45:57,960 >> คุณไม่ต้องการที่จะนำบางสิ่งบางอย่างที่ บนหน้าเว็บเพจ? 1045 00:45:57,960 --> 00:45:59,200 อะไรที่คุณต้องการสีที่จะทำให้มัน? 1046 00:45:59,200 --> 00:46:00,950 คุณทำอะไรขนาดตัวอักษรต้องการให้มัน? 1047 00:46:00,950 --> 00:46:02,970 คำอะไรที่คุณจริง ต้องการบนหน้าเว็บ? 1048 00:46:02,970 --> 00:46:04,060 เพื่อให้ภาษามาร์กอัป 1049 00:46:04,060 --> 00:46:07,690 แต่แล้วเราได้อย่างรวดเร็วจะแนะนำ จาวาสคริปต์ซึ่งเป็นที่เต็มเปี่ยม 1050 00:46:07,690 --> 00:46:08,560 การเขียนโปรแกรมภาษา 1051 00:46:08,560 --> 00:46:12,530 มากที่คล้ายคลึงกันในลักษณะที่ปรากฏ ไปที่ C แต่จะมีบางส่วน 1052 00:46:12,530 --> 00:46:15,200 ดีที่มีประสิทธิภาพมากขึ้น คุณสมบัติเป็นมิตรกับผู้ใช้ 1053 00:46:15,200 --> 00:46:18,050 >> และเป็นหนึ่งในความผิดหวังที่นี้ จุดในภาคการศึกษาคือการที่เราจะ 1054 00:46:18,050 --> 00:46:22,065 ในเร็ว ๆ นี้ดำเนินการสะกดในไกลน้อย บรรทัดของรหัสที่ใช้ภาษาอื่น ๆ 1055 00:46:22,065 --> 00:46:25,580 กว่า C ตัวเองช่วยให้ แต่ด้วยเหตุผลของ ไม่ช้าเราก็จะเข้าใจว่า 1056 00:46:25,580 --> 00:46:27,750 นี้จะเป็นหน้าเว็บดังกล่าวเป็นครั้งแรก 1057 00:46:27,750 --> 00:46:30,120 มันจะเป็น underwhelming สมบูรณ์ คนแรกที่เราทำ 1058 00:46:30,120 --> 00:46:31,400 มันก็จะพูดว่า Hello World 1059 00:46:31,400 --> 00:46:34,010 แต่ถ้าคุณไม่เคยเห็นมัน ก่อนนี้เป็น HTML, 1060 00:46:34,010 --> 00:46:35,670 ภาษา Hypertext Markup 1061 00:46:35,670 --> 00:46:39,310 >> ถ้าคุณไปที่ตัวเลือกเมนูบางอย่างใน มากที่สุดเบราว์เซอร์ใด ๆ บนหน้าเว็บใด ๆ 1062 00:46:39,310 --> 00:46:43,160 อินเทอร์เน็ตคุณสามารถดู HTML ที่บางคนเขียนจดหมายไปถึง 1063 00:46:43,160 --> 00:46:44,400 สร้างหน้าเว็บที่ 1064 00:46:44,400 --> 00:46:47,850 และมันอาจจะดูไม่เป็น สั้นหรือเป็นที่เรียบร้อยเช่นนี้ 1065 00:46:47,850 --> 00:46:51,400 แต่มันจะเป็นไปตามรูปแบบของเหล่านี้ วงเล็บเปิดและ slashes และ 1066 00:46:51,400 --> 00:46:53,660 ตัวอักษรและตัวเลขที่อาจเกิดขึ้น 1067 00:46:53,660 --> 00:46:56,770 >> ฉันคิดว่าฉันต้องการให้คุณทีเซอร์ ของสิ่งที่คุณจะสามารถที่จะทำ 1068 00:46:56,770 --> 00:46:57,950 หลังจากการ CS50 1069 00:46:57,950 --> 00:47:02,620 ให้ฉันไป cs.harvard.edu / ปล้น, หน้าแรกของตัวเองของเราร็อบโบว์ 1070 00:47:02,620 --> 00:47:06,080 เขาทำนี้สำหรับเรา 1071 00:47:06,080 --> 00:47:07,490 ดังนั้นคุณจะเร็วจะสามารถที่จะทำอย่างนั้น 1072 00:47:07,490 --> 00:47:10,660 และยังเป็นสิ่งที่คุณได้ยิน เช้านี้ - 1073 00:47:10,660 --> 00:47:12,480 สิ่งที่คุณได้ยินเมื่อเช้านี้ - 1074 00:47:12,480 --> 00:47:13,780 >> [MUSIC หนูแฮมสเตอร์ DANCE] 1075 00:47:13,780 --> 00:47:15,702 >> - You'Ll จะสามารถที่จะทำเรื่องนี้ให้ 1076 00:47:15,702 --> 00:47:16,790 ที่รอเราเมื่อวันพุธที่ 1077 00:47:16,790 --> 00:47:17,791 เราจะเห็นคุณแล้ว 1078 00:47:17,791 --> 00:47:22,950 >> [MUSIC หนูแฮมสเตอร์ DANCE] 1079 00:47:22,950 --> 00:47:24,300 DAVID ลัน: ตอนต่อไป CS50 - 1080 00:47:24,300 --> 00:47:31,670