1 00:00:00,000 --> 00:00:11,460 2 00:00:11,460 --> 00:00:12,250 >> डेविड मालन: सब ठीक है. 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 तो अगर आप अपने के सभी बरामद संभालने अध्येताओं और सीए की तस्वीरों शिक्षण 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 >> यह हर साल, की ओर जाता है creepiness का एक सा. 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 डेविड मालन: एक कर्मचारी से अगले बोली सदस्य, "एक छात्र पर मेरे घर आया था 23 00:01:20,410 --> 00:01:25,330 04:00 पर Somerville आज सुबह. "अगला स्टाफ, "मैं सैन में अपने होटल के लिए मिला 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 सुबह और दर्ज की पूरी बात ,. गूगल ग्लास के साथ "और फिर अंत में 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 ध्यान रहे, वह गूगल ग्लास पहने हुए है, तो हम के बाद आप यह सब दिखाता हूँ. 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 इस सप्ताह विशेष रूप से, एक में सी से कमांड लाइन PHP के लिए पर्यावरण और 48 00:02:38,410 --> 00:02:42,720 जावास्क्रिप्ट और एसक्यूएल और HTML और सीएसएस एक वेब आधारित वातावरण, हम हो जाएगा 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 बहुत ज्यादा प्रोग्रामिंग करने के लिए और से संबंधित एप्लिकेशन विकास और बहुत आगे है, लेकिन 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 और इस साल के लिए इस प्रकार अब तक रोस्टर पर रूबी के साथ अद्भुत वेब Apps पर हैं 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 वेब ऐप्लिकेशन के लिए जावास्क्रिप्ट, हम कवर करेंगे यही नहीं, लेकिन इस संगोष्ठी में, तुम जाना होगा 64 00:03:22,890 --> 00:03:24,070 और अधिक विस्तार में. 65 00:03:24,070 --> 00:03:27,390 >> लीप मोशन, इसलिए हम वास्तव में कुछ करना होगा लीप मोशन से हमारे दोस्तों की, 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 एंड्रॉयड एक बहुत ही लोकप्रिय विकल्प जा रहा है आईओएस और विंडोज फोन को 74 00:03:46,990 --> 00:03:48,790 और अन्य मोबाइल प्लेटफार्मों. 75 00:03:48,790 --> 00:03:51,180 और वेब सुरक्षा सक्रिय रक्षा. 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 उनमें से कोई सी, उनमें से कोई भी पीएचपी, तो एहसास इन सेमिनारों में से एक या अधिक 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 हम हम आमंत्रित करते हैं कि प्रत्येक वर्ष बनाए रखने के समुदाय, संकाय से लोगों को, 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 >> दर्शक: गतिशील आकार. 107 00:05:08,080 --> 00:05:09,040 >> डेविड मालन: गतिशील आकार. 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 >> डेविड मालन: यह अधिक की आवश्यकता स्मृति, बिल्कुल कैसे? 123 00:05:44,240 --> 00:05:46,440 >> दर्शक: [सुनाई]. 124 00:05:46,440 --> 00:05:47,050 >> डेविड मालन: बिल्कुल. 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 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 मैं बड़ा की तुलना में बेहतर कर सकते हैं खोज के लिए एन के हे? 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 संरचना, और क्या मैंने किया यहाँ इस बात को कॉल करना चाहते हैं? 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. 168 00:07:33,050 --> 00:07:35,930 और हम, कॉल मी हम चाहते हैं कुछ भी कर सकता है हम कर रहे हैं, लेकिन यह एक पूर्णांक होना चाहिए 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 node *. 172 00:07:43,460 --> 00:07:50,570 तो मैं संरचना नोड *, और फिर अगर मैं ऐसा मैं चाहता हूँ कि जो कुछ भी इस कॉल कर सकते हैं, 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 वाचाल यहाँ संरचना की घोषणा में नोड * अगले, के रूप में विरोध 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 >> डेविड मालन: बिल्कुल. 182 00:08:14,050 --> 00:08:14,530 बिल्कुल सही. 183 00:08:14,530 --> 00:08:18,320 सी वास्तव में सचमुच ले जाता है और इस वजह केवल नोड की परिभाषा देखता है 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 अधिक वाचाल. 187 00:08:25,390 --> 00:08:27,810 Struct node मतलब है कि, अब हम इसे उपयोग कर सकते हैं 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 संरचना नोड होगा. 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 इसलिए कि हमारे घोषणापत्र था संरचना नोड की. 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 के एक हैश तालिका है, n करने के लिए ऊपर छोड़ दिया पर 0 से अनुक्रमित 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 और जावास्क्रिप्ट में. 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 और बॉब, एक बी नाम, अनुक्रमित किया जाएगा 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 >> यह एक पूर्णांक वापस जाने के लिए जा रहा है. 233 00:10:29,030 --> 00:10:33,600 यह हैश कहा जा रहा है, और यह बात है एक तर्क एक के रूप में स्वीकार करने के लिए जा रहा 234 00:10:33,600 --> 00:10:38,920 स्ट्रिंग, या हम अब और अधिक उचित हो सकता है और हम यह बात फोन करता हूँ, चार * कहते हैं. 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 मैं बस आँख बंद करके कहने जा रहा हूँ, वापसी जो भी हो, एस ब्रैकेट 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 1 0 और बॉब व्यक्त किया जा सकता है निश्चित रूप से अधिक formulaically एक सी के रूप में 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 यही कारण है कि जहां आप, सवाल भी जन्म देती है दूसरा जैसे नाम रखा है? 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 एक मेस के एक बिट में devolving. 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 >> डेविड मालन: ठीक है. 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 >> डेविड मालन: ठीक है. 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 यह मुझे द्विआधारी खोज करते हैं, लेकिन मैं नहीं होगा कम से कम बाहर तोड़ने के लिए सक्षम हो सकता है 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 >> डेविड मालन: यह एक लंबा समय लग सकता है सूची के अंत में मिलता है. 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 हो सकता है कि आप को बनाए रखने से बेहतर हो लगातार प्रविष्टि समय, 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 इन दोनों हैश में dives 330 00:14:41,770 --> 00:14:43,260 और अधिक विस्तार में टेबल और कोशिश करता है,. 331 00:14:43,260 --> 00:14:45,630 और वीडियो Walkthrough है पी सेट कल्पना में एम्बेडेड. 332 00:14:45,630 --> 00:14:46,590 यह एक Trie था - 333 00:14:46,590 --> 00:14:51,670 टी आर मैं ई. और क्या बारे में दिलचस्प था यह था कि समय चल रहा है 334 00:14:51,670 --> 00:14:59,510 के मैक्सवेल की तरह, एक नाम के लिए खोज पिछली बार, क्या की बड़ी हे था? 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 >> डेविड मालन: पत्रों की संख्या. 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, और तब, एम सूचक का पालन करें फिर एक सूचक है, तो एक्स, 349 00:15:30,521 --> 00:15:31,710 ई, एल, एल, डब्ल्यू. 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 >> खैर, हम एम ए एक्स डब्ल्यू ई एल एल के लिए चला गया है एक बार, शायद, सात की तरह लगता है 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 तो सच में, हाँ, यह तकनीकी रूप से बिग हे 8 या 7, या लालकृष्ण का वास्तव में बड़ी हे लेकिन 359 00:16:05,770 --> 00:16:09,420 क्या पर एक परिमित टोपी अगर वहाँ कश्मीर में हो सकता है, यह एक निरंतर है. 360 00:16:09,420 --> 00:16:12,080 और तो यह 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 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 यह एकमात्र समाधान नहीं हो सकता पी सेट के लिए 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 जैसे हैश तालिकाओं, tradeoff है. 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 बी और सी और क्यू और वाई और इन सरणियों में जेड है. 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 हम मर्ज सॉर्ट, लेकिन कीमत का उपयोग करते समय हम मर्ज के लिए लॉग एन एन प्राप्त करने के लिए भुगतान किया 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 किसी को भी, जो डी हॉल को पहचानते हैं? 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 >> डेविड मालन: मैं माफी चाहता हूँ. 421 00:18:30,260 --> 00:18:31,210 >> दर्शक: कार्य करने के लिए कॉल. 422 00:18:31,210 --> 00:18:33,590 >> डेविड मालन: कार्य करने के लिए कहता है, लेकिन विशेष रूप से, क्या में से प्रत्येक के अंदर है 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, या INT तरह 428 00:18:43,080 --> 00:18:45,940 अस्थायी, या जो कुछ भी स्थानीय चर हम किया गया है, है 429 00:18:45,940 --> 00:18:47,210 ढेर पर कि लगा. 430 00:18:47,210 --> 00:18:49,610 और हम एक ढेर इसे कहते हैं क्योंकि कि layering विचार की. 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 धक्का और पॉप. 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 तो बस एक पूर्णांक. 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 आप कर सकते हैं एचटीएमएल नामक एक भाषा, में लेख वास्तव में ऐसा एक डेटा संरचना का उपयोग 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 >> मैं अब इस का प्रतिनिधित्व करने के लिए गए थे तो अगर सचित्र रूप से, चलो चलो लगता है कि इस 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 और मुझे तुम आप कर सकते हैं ताकि mic दे इस में अधिक सक्रिय रूप से हिस्सा लेना. 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 >> स्टीवन: बहुत ज्यादा नहीं है. 516 00:23:10,100 --> 00:23:12,080 >> डेविड मालन: ठीक है, ज्यादा नहीं. 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 >> स्टीवन: बस यादृच्छिक कोड, है ना? 520 00:23:18,630 --> 00:23:20,220 बस - 521 00:23:20,220 --> 00:23:23,230 >> डेविड मालन: हाँ, मैं जा रहा हूँ कोड को बुलाओ, लेकिन यादृच्छिक - 522 00:23:23,230 --> 00:23:23,820 >> स्टीवन: चीजें. 523 00:23:23,820 --> 00:23:28,290 >> डेविड मालन: रैंडम जैसे हालात 524 00:23:28,290 --> 00:23:28,870 >> स्टीवन: बिट्स. 525 00:23:28,870 --> 00:23:29,530 >> डेविड मालन: बिट्स, सही? 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 >> स्टीवन: ट्रे 3 उप है. 536 00:23:53,070 --> 00:23:53,910 >> डेविड मालन: तो, ठीक है. 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 >> स्टीवन: शून्य. 541 00:24:03,880 --> 00:24:04,460 >> डेविड मालन: तो यह शून्य होना चाहिए. 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. 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 >> स्टीवन: भीतर - 555 00:24:36,200 --> 00:24:37,400 आकार? 556 00:24:37,400 --> 00:24:37,650 >> डेविड मालन: ठीक है. 557 00:24:37,650 --> 00:24:38,770 आकार क्या हो जाना चाहिए? 558 00:24:38,770 --> 00:24:39,580 >> स्टीवन: आकार एक होगा. 559 00:24:39,580 --> 00:24:39,870 >> डेविड मालन: ठीक है. 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 >> स्टीवन: हम से जा रहे हैं 9 अप करने के लिए नीचे. 568 00:24:57,060 --> 00:24:57,760 >> डेविड मालन: 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 >> स्टीवन: तो आकार दो पर जाने के लिए जा रहा है. 576 00:25:14,720 --> 00:25:15,300 >> डेविड मालन: ठीक है. 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 >> स्टीवन: रबड़. 581 00:25:18,840 --> 00:25:19,720 >> डेविड मालन: आप एक ब्रश कर रहे हैं. 582 00:25:19,720 --> 00:25:20,560 >> स्टीवन: ब्रश. 583 00:25:20,560 --> 00:25:20,920 >> डेविड मालन: ठीक है. 584 00:25:20,920 --> 00:25:21,600 और क्या? 585 00:25:21,600 --> 00:25:22,600 >> स्टीवन: और फिर हम - 586 00:25:22,600 --> 00:25:22,915 >> डेविड मालन: हम 17 से धक्का दे दिया. 587 00:25:22,915 --> 00:25:24,760 >> स्टीवन: हम तो, शीर्ष पर 17 छड़ी - 588 00:25:24,760 --> 00:25:25,710 >> डेविड मालन: ठीक है, अच्छा है. 589 00:25:25,710 --> 00:25:27,040 >> स्टीवन: - नीचे ड्रॉप. 590 00:25:27,040 --> 00:25:27,530 >> डेविड मालन: सब ठीक है. 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 >> स्टीवन: क्या किया. 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 >> डेविड मालन: 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 >> स्टीवन: ऊह. 603 00:25:46,350 --> 00:25:50,278 हे भगवान. 604 00:25:50,278 --> 00:25:52,520 तुम सच में मुझे गार्ड से पकड़ा. 605 00:25:52,520 --> 00:25:53,703 >> डेविड मालन: तुम नहीं किया इस आ देखते हैं? 606 00:25:53,703 --> 00:25:55,930 >> स्टीवन: मैं यह आभास नहीं था. 607 00:25:55,930 --> 00:25:58,756 हम फिर से प्रारंभिक क्षमता सकता है? 608 00:25:58,756 --> 00:25:59,790 >> डेविड मालन: यह एक अच्छा सवाल है. 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 इसलिए हम वास्तव में यह reallocate नहीं कर सकते हैं. 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 लेकिन यह मुक्त कराने से पहले, हम कर सकते थे स्मृति का एक बड़ा हिस्सा reallocate, 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 पुश और पॉप संभवतः जा रहे हैं कुछ त्रुटि संकेत करने के लिए है. 622 00:26:36,360 --> 00:26:40,270 >> तो उदाहरण के लिए, हमारे कार्यान्वयन की धक्का एक bool लौट सकता है जो 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 >> [वाहवाही] 630 00:26:53,110 --> 00:26:54,382 >> स्टीवन: धन्यवाद. 631 00:26:54,382 --> 00:26:55,680 >> डेविड मालन: धन्यवाद. 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 यहाँ किया, लेकिन बजाय फिर से की घोषणा इस बस के रूप में, स्पष्ट होना 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 क्यों सिर्फ ट्रे एक होने की घोषणा नहीं एक नोड के लिए सूचक, एक लिंक सूची फलस्वरूप 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 एक पूर्णांक और एक अगले सूचक है. 669 00:28:44,830 --> 00:28:47,670 ऐसा लगता है कि सूचक के माध्यम से नेतृत्व करने के लिए जा रहा है एक और ऐसी संरचना करने के लिए 670 00:28:47,670 --> 00:28:48,600 एक और ऐसी संरचना. 671 00:28:48,600 --> 00:28:50,560 तो तस्वीर वास्तव में होगा एक बिट मेसियर मिलता है. 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 पी सेट 6, आप कर सकते हैं के लिए अलग श्रृंखलन एक बिल्डिंग ब्लॉक, या एक के रूप में उपयोग 677 00:29:05,120 --> 00:29:08,870 घटक, या खरोंच में बोलते हैं, एक प्रक्रिया, तुम डाल कुछ है कि, आप 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 आपरेशन और एक विपंक्ति आपरेशन, में जो समान हैं 689 00:29:48,900 --> 00:29:50,120 धक्का और पॉप करने के लिए भावना. 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 इसे दूर करने के साधन विपंक्ति करें. 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 के 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 साथ ही एक पूर्णांक होने जा रहा. 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 >> तो इस मामले में, मैं initialized किया है सामने होने के लिए - 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 बजे, वहां से आगे जाने के लिए और अप लाइन 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 >> डेविड मालन: नहीं, यह ठीक है. 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 सम्मिलित करने से पहले, चलो आगे बढ़ो और 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 >> डेविड मालन: जेक जा रहा है अब 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 तो अब क्या जरूरत है - सूचना प्रौद्योगिकी विभाग, सूचना प्रौद्योगिकी विभाग, सूचना प्रौद्योगिकी विभाग! 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 >> डेविड मालन: डेविड. 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 यही कारण है कि मुझे बड़ा ओ के बारे में चापलूसी करता है 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 तो 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 करते हैं - 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 >> डेविड मालन: Callen. 829 00:35:16,580 --> 00:35:20,770 चलो एक Callen enqueue करते हैं, और 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 >> तो अब क्या होता है अगर मैं दाऊद विपंक्ति? 837 00:35:39,200 --> 00:35:41,560 पिछले एक आपरेशन, विपंक्ति डेविड. 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 मैं, 26 अपने आप enqueue तो? 845 00:36:03,280 --> 00:36:05,890 मैं यहाँ पर संबंधित की तरह लग रहा है. 846 00:36:05,890 --> 00:36:06,890 इसलिए मैं कतारबद्ध किया जा रहा हूँ. 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 >> डेविड मालन: ठीक है. 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 माड आपरेटर, प्रतिशत. 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 >> डेविड मालन: बिल्कुल. 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 >> [वाहवाही] 898 00:38:17,090 --> 00:38:18,150 >> डेविड मालन: मैं दे सकता है आप ट्रे रखना. 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 डोम में कुछ कहा, दस्तावेज़ ऑब्जेक्ट मॉडल. 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 द्विपक्षीय फिर इस में, दो अर्थ बाइनरी साथ जैसे मामले,. 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 दो आदानों, एन, एक पूर्णांक, और एक दिया एक पेड़, एक के लिए एक सूचक को सूचक 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 कोई नोड है, तो कोई पता नहीं है, कोई संख्या नहीं है, सिर्फ झूठी वापसी. 953 00:41:04,580 --> 00:41:12,330 हालांकि अगर, एन, मूल्य आप देख रहे हैं के लिए, पेड़ तीर n से भी कम है, और 954 00:41:12,330 --> 00:41:15,180 बस स्पष्ट होना, इसका मतलब क्या है जब मैं पेड़ और तब तीर लिखना 955 00:41:15,180 --> 00:41:18,150 अंकन, एन? 956 00:41:18,150 --> 00:41:18,690 बिल्कुल सही. 957 00:41:18,690 --> 00:41:21,970 ऐसा लगता है कि भिन्नता का मतलब सूचक पेड़ कहा जाता है. 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 >> तो एन एन मूल्य से कम है, तो वृक्ष नोड ही में, अच्छी तरह से, 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 आप में से एक सरणी है जैसे जब मूल्यों, आप द्विआधारी आवेदन करना चाहते हो सकता है 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 लेकिन अब, एक ही परिभाषा नोटिस यह मौखिक रूप से एक पुनरावर्ती परिभाषा है 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 प्रत्यावर्तन, हम अब पता लगा सकते हैं. 987 00:42:53,910 --> 00:42:59,160 तो पता है कि मूल्य एन से कम है तो वर्तमान नोड, मैं जा रहा हूँ 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 पर मूल्य एन से अधिक है पेड़ में मौजूदा नोड, तो मैं कर रहा हूँ 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 तो मुझे खोज बारी बारी से फोन करते हैं, फिर एक एन गुजर रहा है, लेकिन एक में गुजर 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 यह एन में है कि होना चाहिए मैं कर रहा हूँ कि वर्तमान नोड. 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 >> नीचे शाखा की तरह है Default, हम के लिए जाँच की है अगर जिससे 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 तो दो पुनरावर्ती मामलों रहे है बीच में वहाँ बैठा. 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 दिखने में बहुत समान वाक्य रचना सी करने के लिए, लेकिन यह कुछ होगा 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 सी ही अनुमति देता है की तुलना में, लेकिन कारण के लिए हम जल्द ही समझ में आ जाएगा. 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 यह बस दुनिया नमस्ते, कहेंगे. 1059 00:46:31,400 --> 00:46:34,010 लेकिन आप यह कभी नहीं देखा है इससे पहले, इस HTML है, 1060 00:46:34,010 --> 00:46:35,670 हाइपरटेक्स्ट मार्कअप लैंग्वेज. 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 लेकिन यह इन के पैटर्न का पालन करेंगे खुले कोष्ठक और स्लैश और 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 >> [हैम्स्टर नृत्य संगीत] 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 >> [हैम्स्टर नृत्य संगीत] 1079 00:47:22,950 --> 00:47:24,300 डेविड मालन: अगले CS50 पर - 1080 00:47:24,300 --> 00:47:31,670