1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:03,340 [موسیقی بجانے] 3 00:00:03,340 --> 00:00:11,020 4 00:00:11,020 --> 00:00:14,010 >> DAVID MALAN: یہ CS50 ہے. 5 00:00:14,010 --> 00:00:18,090 اور یہ شروع اور دونوں ہے لفظی تقریبا آخر کی طرح end-- 6 00:00:18,090 --> 00:00:18,825 ہفتے کے چھ کے. 7 00:00:18,825 --> 00:00:20,030 8 00:00:20,030 --> 00:00:22,640 >> میں نے ایک اشتراک سوچا ایک مذاق حقیقت کی تھوڑا سا. 9 00:00:22,640 --> 00:00:25,370 میں نے ایک سے اس کو نکالا ہے ماضی کی سمسٹر کے ڈیٹا مقرر. 10 00:00:25,370 --> 00:00:29,710 تم ہم ہر پر آپ سے پوچھنا ہے کہ یاد کر سکتے ہیں P سیٹ کے فارم آپ کو آن لائن دیکھا ہے تو 11 00:00:29,710 --> 00:00:31,580 یا اگر آپ اس شخص کو میں شرکت کی ہے تو. 12 00:00:31,580 --> 00:00:33,020 اور یہاں کا ڈیٹا ہے. 13 00:00:33,020 --> 00:00:34,710 آج تو بہت زیادہ امکانات تھے. 14 00:00:34,710 --> 00:00:37,126 لیکن ہم تھوڑا سا خرچ کرنے کے لئے کرنا چاہتا تھا وقت کے لئے آپ کے ساتھ باوجود. 15 00:00:37,126 --> 00:00:40,599 کسی کو کیوں یہ قیاس کرنا چاہوں گا گراف، اوپر، نیچے، اوپر، نیچے، تا سے Jaggy ہے 16 00:00:40,599 --> 00:00:41,265 تو مسلسل کا؟ 17 00:00:41,265 --> 00:00:42,980 18 00:00:42,980 --> 00:00:45,130 کیا چوٹیوں میں سے ہر ایک ایسا اور troughs کی نمائندگی؟ 19 00:00:45,130 --> 00:00:46,005 >> سامعین: [اشراوی] 20 00:00:46,005 --> 00:00:47,002 21 00:00:47,002 --> 00:00:47,835 DAVID MALAN: بے شک. 22 00:00:47,835 --> 00:00:50,900 23 00:00:50,900 --> 00:00:55,480 اور زیادہ amusingly، خدا نہ کرے، ہم نے ایک جمعہ کو ایک لیکچر پکڑ 24 00:00:55,480 --> 00:00:58,960 سمسٹر کے آغاز میں، کہ ہم ہو دیکھ کیا ہے. 25 00:00:58,960 --> 00:01:03,430 تو آج، ہم تھوڑا سا میں حصہ لینا ڈیٹا ڈھانچے کے بارے میں مزید. 26 00:01:03,430 --> 00:01:06,660 اور اگر آپ کو ایک ٹھوس کے زیادہ دینا پانچ بجے کے مسائل کے لئے ذہنی ماڈل، 27 00:01:06,660 --> 00:01:07,450 جو اب باہر ہے. 28 00:01:07,450 --> 00:01:10,817 غلط ہجے، جس میں، ہم کریں گے اگر آپ ٹیکسٹ فائل کے ہاتھ کچھ 100،000 29 00:01:10,817 --> 00:01:12,650 علاوہ انگریزی الفاظ، اور اگر آپ جا رہے ہیں 30 00:01:12,650 --> 00:01:17,770 چالاکی سے ان کو لوڈ کرنے کے لئے کس طرح پتہ کرنے میموری میں، RAM میں، کچھ ڈیٹا کا استعمال کرتے ہوئے 31 00:01:17,770 --> 00:01:19,330 آپ کی پسند کا ڈھانچہ. 32 00:01:19,330 --> 00:01:22,470 >> اب ایسے ہی ایک آنکڑا ڈھانچہ کر سکتے تھے نہیں ہونا چاہئے شاید ہو، لیکن، 33 00:01:22,470 --> 00:01:25,630 کافی سادہ لنک کی فہرست، جو ہم نے آخری بار متعارف کرایا. 34 00:01:25,630 --> 00:01:29,220 اور ایک لنک کی فہرست میں کم از کم دیکھا گیا ایک صف پر ایک فائدہ. 35 00:01:29,220 --> 00:01:32,096 ایک فائدہ کے کیا ہے arguably سب ایک لنک کی فہرست؟ 36 00:01:32,096 --> 00:01:32,950 >> سامعین: اضافے. 37 00:01:32,950 --> 00:01:33,908 >> DAVID MALAN: اضافے. 38 00:01:33,908 --> 00:01:34,155 39 00:01:34,155 --> 00:01:35,196 تم نے اس سے کیا مطلب ہے؟ 40 00:01:35,196 --> 00:01:37,872 >> سامعین: کہیں بھی ساتھ فہرست [اشراوی]. 41 00:01:37,872 --> 00:01:38,770 >> DAVID MALAN: اچھا. 42 00:01:38,770 --> 00:01:42,090 لہذا اگر آپ کو ایک عنصر جہاں بھی داخل کر سکتے ہیں آپ کو فہرست کے وسط میں چاہتا ہوں 43 00:01:42,090 --> 00:01:45,490 کچھ بھی فینٹنا کرنے کے لئے بغیر، جس میں ہم ہمارے چھںٹائی میں، یہ نتیجہ اخذ کیا 44 00:01:45,490 --> 00:01:47,630 بات چیت، نہیں ہے ایک اچھی بات ضروری، 45 00:01:47,630 --> 00:01:51,200 یہ وقت لگتا ہے، کیونکہ اصل میں منتقل کرنے کے لئے لوگ انسانوں میں سے سب کے بائیں یا دائیں. 46 00:01:51,200 --> 00:01:55,540 اور اس طرح ایک لنک کی فہرست کے ساتھ، آپ کر سکتے ہیں صرف malloc کے ساتھ مختص، ایک نیا نوڈ، 47 00:01:55,540 --> 00:01:58,385 اور اس کے بعد کے ایک جوڑے کو اپ ڈیٹ اشارہ دو، تین آپریشن max-- 48 00:01:58,385 --> 00:02:01,480 اور ہم کسی سلاٹ کرنے کے قابل ہیں ایک فہرست میں کہیں بھی میں. 49 00:02:01,480 --> 00:02:03,550 >> اور کیا فائدہ مند تھا ایک لنک کی فہرست کے بارے میں؟ 50 00:02:03,550 --> 00:02:04,980 51 00:02:04,980 --> 00:02:05,659 جی ہاں؟ 52 00:02:05,659 --> 00:02:06,534 >> سامعین: [اشراوی] 53 00:02:06,534 --> 00:02:07,538 54 00:02:07,538 --> 00:02:08,413 DAVID MALAN: کامل. 55 00:02:08,413 --> 00:02:10,590 56 00:02:10,590 --> 00:02:11,090 کامل. 57 00:02:11,090 --> 00:02:12,070 یہ واقعی میں متحرک ہے. 58 00:02:12,070 --> 00:02:15,100 اور تم نے ارتکاب نہیں کر رہے ہیں کہ، ایڈوانس میں، کچھ مقررہ سائز کے 59 00:02:15,100 --> 00:02:18,750 میموری کا حصہ، جیسا کہ آپ کو ہوگا ایک سرنی کے ساتھ، الٹا کرنے کے لئے جس کا 60 00:02:18,750 --> 00:02:22,455 آپ کو صرف پر نوڈس مختص کر سکتے ہیں یہ ہے کہ مانگ، اس طرح صرف کے طور پر زیادہ سے زیادہ جگہ کو استعمال کرتے ہوئے 61 00:02:22,455 --> 00:02:23,330 آپ نے واقعی ضرورت کے طور پر. 62 00:02:23,330 --> 00:02:26,830 ایک صف کے ساتھ اس کے برعکس کی طرف سے، آپ کو شاید یہ اتفاقی بہت کم مختص. 63 00:02:26,830 --> 00:02:28,871 اور پھر یہ صرف جا رہا ہے گردن میں درد ہونے کا 64 00:02:28,871 --> 00:02:32,440 ایک نئی بڑی سرنی reallocate کرنے، کاپی سب کچھ ختم،، پرانے سرنی آزاد 65 00:02:32,440 --> 00:02:33,990 اور پھر آپ کے کاروبار کے بارے میں منتقل. 66 00:02:33,990 --> 00:02:37,479 یا برا، آپ کو راستے مختص سکتا آپ اصل میں ضرورت سے زیادہ میموری، 67 00:02:37,479 --> 00:02:40,520 اور تو آپ کو ایک بہت کی ضرورت کے لئے جا رہے ہیں تو بات کرنے کی، سرنی کم آبادی. 68 00:02:40,520 --> 00:02:44,350 >> تاکہ ایک لنک کی فہرست کے ان آپ کو دیتا ہے تحرک اور لچک کے فوائد 69 00:02:44,350 --> 00:02:46,080 اضافے اور حذف کے ساتھ. 70 00:02:46,080 --> 00:02:48,000 لیکن ضرور ادا کی ایک قیمت کا ہونا لازمی ہے. 71 00:02:48,000 --> 00:02:50,000 موضوعات کے حوالے سے اصل میں، ایک کوئز صفر پر کھنگالنے 72 00:02:50,000 --> 00:02:52,430 تھا تجارت آف کے ایک جوڑے ہم ابھی تک دیکھا ہے. 73 00:02:52,430 --> 00:02:56,161 تو ایک ایک ادا کی قیمت یا کیا ہے ایک لنک کی فہرست کی کمی؟ 74 00:02:56,161 --> 00:02:56,660 جی ہاں. 75 00:02:56,660 --> 00:02:57,560 >> سامعین: نہیں رینڈم رسائی. 76 00:02:57,560 --> 00:02:58,809 >> DAVID MALAN: نہیں رینڈم رسائی. 77 00:02:58,809 --> 00:02:59,540 لیکن کسے پرواہ ہے؟ 78 00:02:59,540 --> 00:03:01,546 رینڈم ایکسیس مجبور نہیں لگتی. 79 00:03:01,546 --> 00:03:02,421 >> سامعین: [اشراوی] 80 00:03:02,421 --> 00:03:04,865 81 00:03:04,865 --> 00:03:05,740 DAVID MALAN: بالکل. 82 00:03:05,740 --> 00:03:07,580 اگر آپ کرنا چاہتے ہیں ایک مخصوص الگورتھم 83 00:03:07,580 --> 00:03:10,170 اور مجھے اصل تجویز کرتے ہیں خاص طور پر بائنری تلاش، جس 84 00:03:10,170 --> 00:03:12,600 ہم بہت تھوڑا سا استعمال کیا ہے میں سے ایک ہے آپ کو بے ترتیب رسائی حاصل نہیں ہے تو، 85 00:03:12,600 --> 00:03:15,516 اگر آپ اس سادہ ریاضی نہیں کر سکتا درمیانی عنصر کی طرح تلاش کرنے کے لئے 86 00:03:15,516 --> 00:03:16,530 اور اسے درست کرنے کے لئے کود. 87 00:03:16,530 --> 00:03:20,239 آپ اس کے بجائے سب سے پہلے میں شروع کرنا ہے عنصر اور linearly کو بائیں سے تلاش 88 00:03:20,239 --> 00:03:22,780 درست کرنے کے لئے آپ کو تلاش کرنا چاہتے ہیں تو مشرق یا کسی دوسرے عنصر. 89 00:03:22,780 --> 00:03:24,410 >> سامعین: یہ شاید زیادہ میموری لیتا ہے. 90 00:03:24,410 --> 00:03:25,040 >> DAVID MALAN: زیادہ میموری لیتا ہے. 91 00:03:25,040 --> 00:03:27,464 کہ جہاں اضافی ہے میموری میں سے آنے والی لاگت آئے؟ 92 00:03:27,464 --> 00:03:28,339 >> سامعین: [اشراوی] 93 00:03:28,339 --> 00:03:32,566 94 00:03:32,566 --> 00:03:33,440 DAVID MALAN: بالکل. 95 00:03:33,440 --> 00:03:35,679 یہاں اس صورت میں، ہم نے کیا integers کے لئے ایک لنک کی فہرست، 96 00:03:35,679 --> 00:03:37,470 اور ابھی تک ہم دوگنا اضافہ کر رہے ہیں میموری کی رقم 97 00:03:37,470 --> 00:03:39,680 ہم بھی یہ اشارہ ذخیرہ کرکے ضرورت. 98 00:03:39,680 --> 00:03:42,090 کے طور پر ایک بڑا سودا میں سے اب بھی کم آپ structs کے بڑے ہو جاؤ 99 00:03:42,090 --> 00:03:45,320 اور تم نہیں ایک بڑی تعداد کو ذخیرہ کرنے کر رہے ہیں لیکن شاید ایک طالب علم یا کسی دوسری چیز. 100 00:03:45,320 --> 00:03:46,880 لیکن بات کو یقینی طور سے بنی ہوئی ہے. 101 00:03:46,880 --> 00:03:49,421 اور اس طرح کی کارروائیوں کی ایک بڑی تعداد منسلک کی فہرست پر کہا جاتا تھا 102 00:03:49,421 --> 00:03:50,570 (ن) لکیری کے بڑے اے تھے. 103 00:03:50,570 --> 00:03:54,730 اندراج یا تلاش کی طرح باتیں یا کیس ایک عنصر میں منسوخی 104 00:03:54,730 --> 00:03:57,720 کے آخر میں ہونا ہوا اس کے مطابق ہے یا نہیں ہے کہ آیا فہرست. 105 00:03:57,720 --> 00:04:01,167 >> کبھی کبھی تم خوش ہو جاؤ اور میں بھی ہو سکتا ہے ان کارروائیوں پر اتنی نچلی گامزن 106 00:04:01,167 --> 00:04:04,250 اگر آپ نہیں ہیں تو بھی مسلسل وقت ہو سکتا ہے ہمیشہ پہلے عنصر کی طرف دیکھ، 107 00:04:04,250 --> 00:04:05,070 مثال کے طور پر. 108 00:04:05,070 --> 00:04:09,360 لیکن آخر میں، ہم نے وعدہ کیا مقدس grail کے حصول کے لئے 109 00:04:09,360 --> 00:04:12,630 ڈیٹا ڈھانچے میں، یا کچھ سننکٹن اسکی، 110 00:04:12,630 --> 00:04:14,290 مسلسل وقت کی راہ کی طرف. 111 00:04:14,290 --> 00:04:17,579 ہم عناصر تلاش کر سکتے یا عناصر کو شامل کر سکتے ہیں یا ایک فہرست کی طرف سے عناصر کو ہٹا دیں؟ 112 00:04:17,579 --> 00:04:19,059 ہم بہت جلد ہی دیکھیں گے. 113 00:04:19,059 --> 00:04:21,100 اور یہ کہ کسی ایک کو باہر کر دیتا ہے ہم میکانزم میں 114 00:04:21,100 --> 00:04:23,464 آج کا استعمال شروع کرنے کے لئے جا، P میں سالانہ استعمال، پانچ مقرر 115 00:04:23,464 --> 00:04:24,630 اصل میں بہت واقف ہے. 116 00:04:24,630 --> 00:04:27,430 مثال کے طور پر، یہ ایک گروپ ہے، اگر امتحان کتابوں کی، جن میں سے ہر 117 00:04:27,430 --> 00:04:29,660 ایک طالب علم کی پہلی ہے اس پر اور آخری نام کا نام، 118 00:04:29,660 --> 00:04:31,820 اور میں ان سے اٹھا امتحان کے اختتام پر، 119 00:04:31,820 --> 00:04:33,746 اور وہ سب خوبصورت ہو ایک بے ترتیب ترتیب میں زیادہ سے زیادہ، 120 00:04:33,746 --> 00:04:36,370 اور ہم چھنٹائی کے بارے میں جانے کے لئے چاہتے ہیں ان امتحانات تا کہ ایک بار درجہ بندی 121 00:04:36,370 --> 00:04:38,661 یہ صرف بہت آسان ہے اور ان کی تیزی سے واپس باہر حوالے کرنے 122 00:04:38,661 --> 00:04:40,030 حروف تہجی کے طالب علموں کو. 123 00:04:40,030 --> 00:04:42,770 آپ instincts کیا ہو گا اس طرح کے امتحان کے ڈھیر کے لئے؟ 124 00:04:42,770 --> 00:04:45,019 >> ویسے، آپ میری طرح ہیں، تو آپ کو یہ میٹر ہے کہ دیکھ سکتے ہیں، 125 00:04:45,019 --> 00:04:48,505 تو میں، کی طرح میں یہ ڈال کرنے جا رہا ہوں یہ میری میز یا میری منزل کہاں ہے تو 126 00:04:48,505 --> 00:04:50,650 میں چیزوں کو عام کر رہا ہوں باہر یا اپنے صف واقعی 127 00:04:50,650 --> 00:04:52,210 میں وہاں میں نے محترمہ کے تمام ڈال سکتا. 128 00:04:52,210 --> 00:04:52,710 اوہ. 129 00:04:52,710 --> 00:04:55,020 یہاں ایک A. تو میں نے شاید کیا ہے یہاں کے طور پر ڈال دیا. 130 00:04:55,020 --> 00:04:55,520 اوہ. 131 00:04:55,520 --> 00:04:57,980 یہاں میں جا رہا ہوں ایک اور A. ہے یہاں پر ہے کہ ڈال کرنے. 132 00:04:57,980 --> 00:05:02,490 یہاں ایک Z. یہاں ایک اور ایم اور ایسا ہے میں نے اس طرح ڈھیر بنانے شروع ہو سکتا ہے. 133 00:05:02,490 --> 00:05:06,620 اور پھر شاید میں نے بعد میں جانا چاہتے ہیں اور ترتیب دیں کا بہت nitpicky-LY عتبار 134 00:05:06,620 --> 00:05:07,710 انفرادی ڈھیر. 135 00:05:07,710 --> 00:05:11,300 لیکن بات میں نظر آئے گا ہے میں نے ہاتھ میں ہوں کہ ان پٹ میں 136 00:05:11,300 --> 00:05:14,016 اور میں کچھ حساب کر بنا دے گا کہ ان پٹ کی بنیاد پر فیصلہ. 137 00:05:14,016 --> 00:05:15,640 یہ ایک کے ساتھ شروع ہوتا ہے، وہاں سے زیادہ ڈال دیا. 138 00:05:15,640 --> 00:05:18,980 یہ Z کے ساتھ شروع ہوتا ہے، اس پر ڈال دیا درمیان میں وہاں، اور سب کچھ. 139 00:05:18,980 --> 00:05:22,730 >> تو یہ ہے کہ ایک ٹیکنالوجی ہے عام طور hashing-- H-A-S-H-- کے طور پر جانا 140 00:05:22,730 --> 00:05:26,550 جس کو عام طور پر کے طور پر لے جا رہا ہے کا مطلب ان پٹ اور گنتی کرنے کہ ان پٹ کا استعمال کرتے ہوئے 141 00:05:26,550 --> 00:05:30,940 ایک قدر، عام طور پر ایک بڑی تعداد، اور یہ کہ تعداد ایک سٹوریج میں انڈیکس ہے 142 00:05:30,940 --> 00:05:32,260 کنٹینر، ایک صف کی طرح. 143 00:05:32,260 --> 00:05:35,490 تو دوسرے الفاظ میں، میں نے ایک کو ہو سکتا ہے ہیش تقریب، میں نے اپنے سر میں کرتے، 144 00:05:35,490 --> 00:05:37,940 میں نے کسی کو دیکھ کہ اگر A کے ساتھ شروع ہوتا ہے جو نام، 145 00:05:37,940 --> 00:05:40,190 مجھے اس نقشے کے لئے جا رہا ہوں میرے سر میں صفر. 146 00:05:40,190 --> 00:05:44,160 مجھے Z کے ساتھ کسی کو دیکھ کر تو اور، میں ہوں میرے سر میں سے 25 اس نقشے کے لئے جا 147 00:05:44,160 --> 00:05:46,220 اور پھر میں اس کو ڈال گزشتہ بیشتر ڈھیر. 148 00:05:46,220 --> 00:05:50,990 >> اب، اگر آپ میرے دماغ میں نہیں کے بارے میں سوچنا لیکن ایک سی پروگرام، کیا تعداد کر سکتے تھے 149 00:05:50,990 --> 00:05:53,170 آپ اس پر ایک ہی نتائج حاصل کرنے پر انحصار کرتے ہیں؟ 150 00:05:53,170 --> 00:05:55,594 دوسرے الفاظ میں، اگر آپ ، ASCII کردار ایک تھا 151 00:05:55,594 --> 00:05:57,510 کس طرح آپ کو اس بات کا تعین کرتے ہیں کس بالٹی میں ڈال کرنے کے لئے؟ 152 00:05:57,510 --> 00:05:59,801 آپ کو شاید نہیں کرنا چاہتا بالٹی 65، میں ڈال جس 153 00:05:59,801 --> 00:06:01,840 وہاں طرح ہو جائے گا کوئی اچھی وجہ کے لئے. 154 00:06:01,840 --> 00:06:04,320 جہاں آپ کو ایک ڈال کرنا چاہتے ہیں اس کے ASCII قیمت کے لحاظ سے؟ 155 00:06:04,320 --> 00:06:05,600 156 00:06:05,600 --> 00:06:08,920 جہاں آپ کو اس کے ASCII کے لئے کیا کرنا چاہتے ہیں قدر ایک ہوشیار بالٹی کے ساتھ آنا 157 00:06:08,920 --> 00:06:09,480 میں ڈال کرنے کے لئے؟ 158 00:06:09,480 --> 00:06:10,206 >> سامعین: مائنس A. 159 00:06:10,206 --> 00:06:10,956 >> DAVID MALAN: جی ہاں. 160 00:06:10,956 --> 00:06:13,190 لہذا مائنس A یا مائنس خاص 65 اگر اس کے 161 00:06:13,190 --> 00:06:18,240 ایک دارالحکومت A. یا 98 اگر یہ ایک چھوٹے ہے. 162 00:06:18,240 --> 00:06:21,300 اور اس لئے کہ بہت، ہمارے لئے کی اجازت دے گا صرف اور بہت حسابی طریقے سے، 163 00:06:21,300 --> 00:06:23,260 اس طرح ایک بالٹی میں کچھ ڈال دیا. 164 00:06:23,260 --> 00:06:26,010 تو یہ ہم اصل میں کیا کرنا ہے کر دیتا ہے اس کے ساتھ ساتھ اس سے بھی quizzes ہے کے ساتھ. 165 00:06:26,010 --> 00:06:29,051 >> تو اگر آپ کو اپنے دائرے میں یاد کر سکتے ہیں آپ کور پر تعلیم ساتھی کا نام. 166 00:06:29,051 --> 00:06:32,270 اور TF کے ناموں کا اعلان کیا گیا حروف تہجی کے ان کالموں میں، 167 00:06:32,270 --> 00:06:34,400 ساتھ ساتھ، اس پر یقین ہے یا نہیں، جب ہم سب 80 پلس 168 00:06:34,400 --> 00:06:37,800 ، گریڈ میں دوسری رات دوسرے کے ساتھ مل گیا ہمارے گریڈنگ کے عمل میں آخری مرحلہ 169 00:06:37,800 --> 00:06:41,830 ایک بڑا میں quizzes ہے ہیش ہے [اشراوی] پر منزل کے خلا 170 00:06:41,830 --> 00:06:45,110 اور سب کی quizzes کی باہر بچھانے ان TF کی کے بالکل ترتیب میں 171 00:06:45,110 --> 00:06:47,700 کور پر ناموں، کیونکہ تو یہ ہمارے لئے بہت آسان ہے 172 00:06:47,700 --> 00:06:51,290 کہ استعمال کرتے ہوئے لکیری کے ذریعے تلاش کرنے کے لئے تلاش یا تدبیر کے کسی قسم 173 00:06:51,290 --> 00:06:54,050 ایک TF تلاش کرنے کے لئے اس کا یا اس کے طالب علموں 'quizzes ہے. 174 00:06:54,050 --> 00:06:56,060 >> hashing کی تو یہ خیال آپ ہی کو نظر آئے گا کہ 175 00:06:56,060 --> 00:07:00,520 بہت طاقتور ہے واقعی بہت ہے عام اور بہت بدیہی، 176 00:07:00,520 --> 00:07:03,000 زیادہ شاید تقسیم طرح اور فتح ہفتے صفر میں تھا. 177 00:07:03,000 --> 00:07:05,250 Hackathon کے کرنے میں تیزی سے آگے سال کے ایک جوڑے پہلے. 178 00:07:05,250 --> 00:07:08,040 یہ کیا Zamyla اور ایک جوڑے میں سے تھا دیگر عملے سلام طلباء 179 00:07:08,040 --> 00:07:09,030 وہ میں آیا کے طور پر. 180 00:07:09,030 --> 00:07:12,680 اور ہم تہ کی ایک پوری چڑھانے تھا نام کے ٹیگ کے ساتھ وہاں میزیں. 181 00:07:12,680 --> 00:07:15,380 اور ہم نام کے ٹیگ کا اہتمام کیا تھا ساتھ وہاں ہماری طرح 182 00:07:15,380 --> 00:07:16,690 اور وہاں ZS. 183 00:07:16,690 --> 00:07:20,350 اور تو TFs میں سے ایک بہت چالاکی ہدایات کے طور پر یہ لکھا تھا 184 00:07:20,350 --> 00:07:21,030 دن کے لئے. 185 00:07:21,030 --> 00:07:24,480 اور سمسٹر اس کے ہفتے 12 میں تمام کامل احساس اور سب کو بنایا 186 00:07:24,480 --> 00:07:25,310 کیا کرنا جانتے تھے. 187 00:07:25,310 --> 00:07:27,900 لیکن کسی بھی وقت آپ نے اسی طرح میں قطار، 188 00:07:27,900 --> 00:07:30,272 آپ عملدرآمد کر رہے ہیں ایک ہیش کے اسی تصور کی. 189 00:07:30,272 --> 00:07:31,730 تو یہ تھوڑا سا رسمی دیں. 190 00:07:31,730 --> 00:07:32,890 یہاں ایک صف ہے. 191 00:07:32,890 --> 00:07:36,820 یہ ایک چھوٹا سا ہو جائے کرنے کے لئے تیار ہے وسیع صرف ضعف، بیان کرنا، 192 00:07:36,820 --> 00:07:38,920 ہم ڈور ڈال سکتا ہے کچھ اس طرح میں. 193 00:07:38,920 --> 00:07:41,970 اور اس صف ہے واضح طور پر سائز 26، کل. 194 00:07:41,970 --> 00:07:43,935 اور بات یہ ہے کہا جاتا ہے میز منمانے. 195 00:07:43,935 --> 00:07:48,930 لیکن یہ صرف ایک آرٹسٹ کی گاین ہے ایک ہیش ٹیبل ہو سکتا ہے کے. 196 00:07:48,930 --> 00:07:52,799 >> تو ایک ہیش میز اب جا رہا ہے ایک اعلی سطح آنکڑا ڈھانچہ ہونے. 197 00:07:52,799 --> 00:07:54,840 دن کے آخر میں ہم آپ کو یہ دیکھ کر بارے میں ہیں 198 00:07:54,840 --> 00:07:58,700 ایک ہیش میز، پر عمل درآمد کر سکتے ہیں جس زیادہ چیک میں لکیر کی طرح ہے 199 00:07:58,700 --> 00:08:02,059 زیادہ سے زیادہ اس طرح ایک Hackathon کے اوپر ٹیبل امتحان کتابوں چھنٹائی کے لئے استعمال کیا. 200 00:08:02,059 --> 00:08:03,850 لیکن ایک ہیش ٹیبل ہے اس اعلی سطح کی طرح ہے 201 00:08:03,850 --> 00:08:08,250 ایک صف کا استعمال کر سکتا ہے کہ تصور ، ڈاکو اسے لاگو کرنے کے نیچے 202 00:08:08,250 --> 00:08:11,890 یا یہ ایک لمبائی فہرست کا استعمال، یا اس سے بھی کر سکتا ہے شاید کچھ دیگر ڈیٹا کے ڈھانچے. 203 00:08:11,890 --> 00:08:15,590 اور اب کہ theme-- لے جا رہا ہے ان بنیادی اجزاء میں سے کچھ 204 00:08:15,590 --> 00:08:18,310 ایک صف اور اس عمارت کی طرح لمبائی فہرست میں اب بلاک 205 00:08:18,310 --> 00:08:21,740 اور ہم تعمیر کر سکتے ہیں اور کیا دیکھ ان لوگوں کے سب سے اوپر پر، اجزاء کی طرح 206 00:08:21,740 --> 00:08:26,550 ایک ہدایت میں، زیادہ سے زیادہ بنانے دلچسپ اور مفید حتمی نتائج. 207 00:08:26,550 --> 00:08:28,680 >> ہیش ٹیبل کے ساتھ تو ہم اس پر عملدرآمد ہو سکتا ہے 208 00:08:28,680 --> 00:08:32,540 یاد میں pictorially کا اس طرح، لیکن کس طرح یہ اصل میں کوڈت کیا جائے ہو سکتا ہے؟ 209 00:08:32,540 --> 00:08:33,789 ٹھیک ہے، شاید کے طور پر صرف یہ ہے. 210 00:08:33,789 --> 00:08:38,270 تمام بڑے حروف میں صلاحیت، صرف ہے تو مثال 26 کے لئے کچھ constant--، 211 00:08:38,270 --> 00:08:42,030 alphabet-- کے 26 خطوط کے لئے میں نے اپنے متغیر میز فون کر سکتے، 212 00:08:42,030 --> 00:08:45,630 اور میں کرنے جا رہا ہوں یہ دعوی ہو سکتا ہے وہاں، یا سٹرنگ میں چار ستاروں ڈال. 213 00:08:45,630 --> 00:08:49,880 تو یہ اتنا آسان ہے تو اس کے طور پر آپ ایک ہیش میز پر عملدرآمد چاہتے ہیں. 214 00:08:49,880 --> 00:08:51,490 اور ابھی تک، یہ واقعی صرف ایک صف ہے. 215 00:08:51,490 --> 00:08:53,198 لیکن ایک بار پھر، ایک ہیش ٹیبل کیا ہم کریں گے اب ہے 216 00:08:53,198 --> 00:08:57,470 صرف ہے کہ ایک خلاصہ ڈیٹا کی قسم کو فون سب سے اوپر پر ایک تصوراتی layering کے عتبار 217 00:08:57,470 --> 00:09:00,780 زیادہ اشیاءہوسکتی چیز کا اب ایک صف کی طرح. 218 00:09:00,780 --> 00:09:02,960 >> اب، ہم کس طرح جانا ہے مسائل کو حل کرنے کے بارے میں؟ 219 00:09:02,960 --> 00:09:06,980 ویسے، اس سے قبل میں نے عیش و عشرت گیا یہاں کافی ٹیبل خلا اندوز 220 00:09:06,980 --> 00:09:09,460 میں ڈال سکتے ہیں، تا کہ quizzes ہے کہیں بھی میں چاہتا تھا. 221 00:09:09,460 --> 00:09:10,620 تو کے طور پر یہاں جا سکتا. 222 00:09:10,620 --> 00:09:12,100 ZS یہاں جا سکتا. 223 00:09:12,100 --> 00:09:13,230 محترمہ یہاں جا سکتا. 224 00:09:13,230 --> 00:09:14,740 اور پھر میں نے کچھ اضافی خلا تھا. 225 00:09:14,740 --> 00:09:18,740 لیکن یہ ایک دھوکے باز حق کا تھوڑا سا ہے اب اس ٹیبل کی وجہ سے، میں نے تو واقعی 226 00:09:18,740 --> 00:09:22,720 ایک صف کے طور پر اس کے بارے میں سوچا، صرف ہے کچھ مقررہ سائز کے ہونے جا رہا. 227 00:09:22,720 --> 00:09:25,380 >> تو تکنیکی طور پر، میں ھیںچو ایک اور طالب علم کا کوئز اپ 228 00:09:25,380 --> 00:09:28,490 اور اس شخص کی، اوہ، دیکھیں نام، بھی ایک ایک کے ساتھ شروع ہوتا ہے 229 00:09:28,490 --> 00:09:30,980 میں اس قسم کی اس میں ڈال کرنا چاہتے ہیں. 230 00:09:30,980 --> 00:09:34,740 لیکن جیسے ہی میں ہے تو، اس میں ڈال کے طور پر اس ٹیبل یقینا ایک صف کی نمائندگی کرتا ہے، 231 00:09:34,740 --> 00:09:37,840 میں زیرکر یا clobbering کی جائے کرنے کے لئے جا رہا ہوں لھذا جس نے بھی اس طالب علم کے کوئز ہے. 232 00:09:37,840 --> 00:09:38,340 ٹھیک ہے نا؟ 233 00:09:38,340 --> 00:09:41,972 یہ ایک صف ہے، تو صرف ایک ہی بات کر سکتے ہیں ان خلیات یا عناصر میں سے ہر ایک میں جاؤ. 234 00:09:41,972 --> 00:09:43,680 اور اس طرح میں اس قسم کی ہے لینے اور منتخب کرنے کے لئے. 235 00:09:43,680 --> 00:09:45,735 >> اب اس سے قبل میں اس قسم کی دھوکہ دیا اور اس یا میں نے کیا 236 00:09:45,735 --> 00:09:47,526 صرف کی قسم سجا دیئے ایک دوسرے کے اوپر ان. 237 00:09:47,526 --> 00:09:49,170 لیکن اس کے کوڈ میں پرواز کرنے کے لئے نہیں جا رہا ہے. 238 00:09:49,170 --> 00:09:52,260 لہذا میں جہاں ڈال سکتے جس کا نام دوسرا طالب علم 239 00:09:52,260 --> 00:09:54,964 میں نے سب کو یہ ہے تو ایک ہے دستیاب میز کی جگہ؟ 240 00:09:54,964 --> 00:09:57,880 اور میں تین سلاٹ اور اس کا استعمال کیا ہے صرف چند دوسروں کو ہے کی طرح لگتا ہے. 241 00:09:57,880 --> 00:09:58,959 آپ کیا کر سکتے تھے؟ 242 00:09:58,959 --> 00:09:59,834 سامعین: [اشراوی] 243 00:09:59,834 --> 00:10:00,565 244 00:10:00,565 --> 00:10:01,315 DAVID MALAN: جی ہاں. 245 00:10:01,315 --> 00:10:02,370 شاید ہم صرف یہ آسان رکھنے دیں. 246 00:10:02,370 --> 00:10:02,660 ٹھیک ہے نا؟ 247 00:10:02,660 --> 00:10:04,243 میں نے اسے ڈال کرنا چاہتے ہیں جہاں یہ ٹھیک نہیں ہے. 248 00:10:04,243 --> 00:10:07,450 تو میں نے اسے ڈال کے لئے جا رہا ہوں تکنیکی طور پر ایک بی کہاں جائیں گے. 249 00:10:07,450 --> 00:10:09,932 اب، کورس کی، میں نے شروع کر رہا ہوں ایک کونے میں اپنے آپ کو پینٹ کرنا. 250 00:10:09,932 --> 00:10:11,890 میں نے ایک طالب علم کو ملتی ہے تو جس کا نام ہے اصل B ہے، 251 00:10:11,890 --> 00:10:14,840 اب ب ایک چھوٹی سی منتقل کر دیا گیا کیا جا رہا ہے اگے، کے طور پر، جی ہاں، ہو سکتا ہے 252 00:10:14,840 --> 00:10:17,530 یہ ایک بی ہے تو، اب یہ یہاں جانا ہے. 253 00:10:17,530 --> 00:10:20,180 >> اور اس طرح یہ بہت تیزی سے ، مشکلات بن سکتا ہے 254 00:10:20,180 --> 00:10:23,850 لیکن یہ ایک تکنیک ہے کہ اصل میں ہے لکیری کی تحقیقات کے طور پر کہا جاتا ہے، 255 00:10:23,850 --> 00:10:26,650 جس کے تحت آپ نے ابھی غور تمہارا سرنی لائن کے ساتھ بننا. 256 00:10:26,650 --> 00:10:29,680 اور آپ کو صرف اس قسم کی تحقیقات یا ہر ایک دستیاب عنصر کا معائنہ 257 00:10:29,680 --> 00:10:31,360 ایک دستیاب جگہ کے لئے تلاش. 258 00:10:31,360 --> 00:10:34,010 اور جیسے ہی آپ کو تلاش کے طور پر ایک، آپ وہاں میں اسے چھوڑ. 259 00:10:34,010 --> 00:10:38,390 >> اب، قیمت اب ادا کیا جا رہا اس حل کے لئے کیا ہے؟ 260 00:10:38,390 --> 00:10:41,300 ہم ایک مقررہ سائز صف ہے، اور میں ناموں داخل جب 261 00:10:41,300 --> 00:10:44,059 اس میں، کم از کم ابتدائی طور پر، کیا ہے اندراج کی رننگ ٹائم 262 00:10:44,059 --> 00:10:46,350 طلبا کی ڈال کے لئے حق بالٹیاں میں quizzes ہے؟ 263 00:10:46,350 --> 00:10:48,710 264 00:10:48,710 --> 00:10:50,002 کیا میں سے بڑے اے؟ 265 00:10:50,002 --> 00:10:51,147 >> سامعین: (ن). 266 00:10:51,147 --> 00:10:52,480 DAVID MALAN: میں بڑا این اے سنا. 267 00:10:52,480 --> 00:10:53,530 268 00:10:53,530 --> 00:10:54,300 سچ نہیں. 269 00:10:54,300 --> 00:10:56,490 لیکن ہم کے علاوہ چڑھاو گے کیوں صرف ایک لمحے میں. 270 00:10:56,490 --> 00:10:57,702 اور کیا ہو سکتا ہے؟ 271 00:10:57,702 --> 00:10:58,755 >> سامعین: [اشراوی] 272 00:10:58,755 --> 00:11:00,380 DAVID MALAN: اور میرے ضعف یہ کرنے دو. 273 00:11:00,380 --> 00:11:04,720 تاکہ اس خط S. فرض 274 00:11:04,720 --> 00:11:05,604 >> سامعین: یہ ایک ہے. 275 00:11:05,604 --> 00:11:06,520 DAVID MALAN: یہ ایک ہے. 276 00:11:06,520 --> 00:11:06,710 ٹھیک ہے نا؟ 277 00:11:06,710 --> 00:11:08,950 یہ ایک صف، جو ہے ہم بے ترتیب رسائی حاصل کا مطلب ہے کہ. 278 00:11:08,950 --> 00:11:11,790 اور ہم اس کے بارے میں سوچنا تو صفر اور اس کے طور پر 25 کے طور پر، 279 00:11:11,790 --> 00:11:13,800 اور ہم اس بات کا احساس، اوہ، یہاں میری ان پٹ S ہے، 280 00:11:13,800 --> 00:11:16,350 میں یقینی طور پر تبدیل کر سکتے ہیں S، ایک ASCII کردار، 281 00:11:16,350 --> 00:11:18,540 ایک اسی نمبر پر صفر اور 25 کے درمیان 282 00:11:18,540 --> 00:11:20,910 اور اس کے بعد فوری طور پر اس سے تعلق رکھتا ہے جہاں یہ ڈال. 283 00:11:20,910 --> 00:11:26,120 >> لیکن کورس کے، جیسے ہی میں کرنے کے لئے حاصل کے طور پر نام ہے جو دوسرا شخص A یا B یا C ہے 284 00:11:26,120 --> 00:11:29,300 بالآخر، میں نے استعمال کیا ہے تو لکیری، میری حل کے طور پر تحقیقات 285 00:11:29,300 --> 00:11:31,360 کی رننگ ٹائم بدترین صورت میں اندراج 286 00:11:31,360 --> 00:11:33,120 اصل میں کیا میں devolve جا رہا ہے؟ 287 00:11:33,120 --> 00:11:34,270 288 00:11:34,270 --> 00:11:36,045 اور میں اسے یہاں سنا درست طریقے سے جلد از جلد پر. 289 00:11:36,045 --> 00:11:36,920 سامعین: [اشراوی] 290 00:11:36,920 --> 00:11:41,620 DAVID MALAN: تو یہ یقینا ایک بار (ن) ہے اگر آپ کو ایک کافی بڑی ڈیٹا سیٹ ہے. 291 00:11:41,620 --> 00:11:44,410 لہذا، ایک طرف، اگر آپ کی صف کافی بڑا ہے 292 00:11:44,410 --> 00:11:48,287 اور آپ کا ڈیٹا آپ، کافی کم ہے اس خوبصورت مسلسل وقت ملتا ہے. 293 00:11:48,287 --> 00:11:50,620 لیکن جیسے ہی آپ شروع کے طور پر زیادہ سے زیادہ عناصر کو حاصل کرنے، 294 00:11:50,620 --> 00:11:53,200 اور صرف اعدادوشمار آپ کو ملتا ہے خط کے ساتھ زیادہ سے زیادہ لوگ 295 00:11:53,200 --> 00:11:56,030 A کے طور پر ان کے نام یا خط B، یہ ممکنہ طور پر کر سکتے تھے 296 00:11:56,030 --> 00:11:57,900 کچھ زیادہ لکیری میں devolve. 297 00:11:57,900 --> 00:11:59,640 لہذا بہت کامل نہیں. 298 00:11:59,640 --> 00:12:00,690 تو ہم بہتر کر سکتا تھا؟ 299 00:12:00,690 --> 00:12:03,210 >> ٹھیک ہے، کیا تھا کہ ہمارے حل جب ہم سے پہلے 300 00:12:03,210 --> 00:12:06,820 سے زیادہ تحرک ہے کرنا چاہتے ہیں ایک صف کی طرح کچھ کی اجازت دی؟ 301 00:12:06,820 --> 00:12:08,085 302 00:12:08,085 --> 00:12:08,960 سامعین: [اشراوی] 303 00:12:08,960 --> 00:12:10,030 DAVID MALAN: ہم کیا متعارف کرائے گئے تھے؟ 304 00:12:10,030 --> 00:12:10,530 جی ہاں. 305 00:12:10,530 --> 00:12:11,430 تاکہ ایک لنک کی فہرست. 306 00:12:11,430 --> 00:12:14,430 ٹھیک ہے، ایک سے منسلک ہے دیکھتے ہیں فہرست بجائے ہمارے لئے کیا ہو سکتا ہے. 307 00:12:14,430 --> 00:12:17,630 ویسے، مجھے وہ ہم تجویز کرتے ہیں مندرجہ ذیل تصویر کو اپنی طرف متوجہ. 308 00:12:17,630 --> 00:12:19,620 اب یہ ایک مختلف ہے ایک مثال سے تصویر 309 00:12:19,620 --> 00:12:24,750 ایک مختلف متن سے، اصل میں، کہ اصل سائز 31 کے ایک صف کا استعمال کرتے ہوئے ہے. 310 00:12:24,750 --> 00:12:28,220 اور اس کے مصنف کو صرف ڈور ہیش کرنے کا فیصلہ 311 00:12:28,220 --> 00:12:32,430 شخص کی ناموں پر مبنی نہیں، لیکن ان birthdates پر مبنی. 312 00:12:32,430 --> 00:12:35,680 قطع نظر اس ماہ کے، وہ سوچا اگر آپ کو ایک ماہ کے پہلے پر پیدا کر رہے ہیں 313 00:12:35,680 --> 00:12:39,580 یا ایک ماہ کے 31st، مصنف کہ قیمت کی بنیاد پر ہیش گا، 314 00:12:39,580 --> 00:12:44,154 تھوڑا سا باہر ناموں کو پھیلانے کے لئے تو کے طور پر صرف 26 مقامات کی اجازت دیتے ہیں کر سکتے سے بھی زیادہ. 315 00:12:44,154 --> 00:12:47,320 اور شاید یہ تھوڑا زیادہ وردی ہے حروف تہجی خط کے ساتھ جانے کی نسبت، 316 00:12:47,320 --> 00:12:50,236 کیونکہ کورس کے شاید وہاں ہے ناموں کے ساتھ دنیا میں زیادہ لوگ 317 00:12:50,236 --> 00:12:54,020 بات کو یقینی طور سے ایک کے ساتھ اس کے آغاز حروف تہجی کے کچھ دیگر حروف. 318 00:12:54,020 --> 00:12:56,380 تو شاید یہ ایک چھوٹی سی ہے زیادہ وردی، سنبھالنے 319 00:12:56,380 --> 00:12:58,640 ایک ہی تقسیم ایک مہینے بھر میں بچوں کی. 320 00:12:58,640 --> 00:12:59,990 >> لیکن، ظاہر کی، یہ اب بھی نامکمل ہے. 321 00:12:59,990 --> 00:13:00,370 ٹھیک ہے نا؟ 322 00:13:00,370 --> 00:13:01,370 ہم collisions سے منا رہے ہیں. 323 00:13:01,370 --> 00:13:04,680 اس میں ایک سے زیادہ لوگوں آنکڑا ڈھانچہ اب بھی ہیں 324 00:13:04,680 --> 00:13:08,432 کم از کم ایک ہی تاریخ پیدائش اندوز آپ کو مہینے کے قطع نظر ہو. 325 00:13:08,432 --> 00:13:09,640 لیکن مصنف کیا کیا ہے؟ 326 00:13:09,640 --> 00:13:13,427 ہم ایک صف ہے کی طرح ویسے، ایسا لگتا ہے عمودی طور پر تیار کی بائیں ہاتھ کی طرف پر، 327 00:13:13,427 --> 00:13:15,010 لیکن یہ صرف ایک آرٹسٹ کی گاین ہے. 328 00:13:15,010 --> 00:13:18,009 اس سے کوئی فرق نہیں پڑتا کس سمت آپ ایک سرنی اپنی طرف متوجہ، یہ اب بھی ایک صف ہے. 329 00:13:18,009 --> 00:13:20,225 اس بظاہر کی ایک صف کیا ہے؟ 330 00:13:20,225 --> 00:13:21,500 >> سامعین: لنک کی فہرست. 331 00:13:21,500 --> 00:13:21,650 >> DAVID MALAN: جی ہاں. 332 00:13:21,650 --> 00:13:23,490 یہ ایک ایسا لگتا ہے جیسے لنک کی فہرست کے سرنی. 333 00:13:23,490 --> 00:13:26,490 تو ایک بار پھر، کی طرح اس نقطہ پر اب ان اعداد و شمار کے ڈھانچے کو استعمال کرتے ہوئے کی 334 00:13:26,490 --> 00:13:28,550 زیادہ کرنے کے اجزاء کے طور پر دلچسپ حل، 335 00:13:28,550 --> 00:13:30,862 تم بالکل ایک لے سکتے ہیں بنیادی، ایک صف کی طرح، 336 00:13:30,862 --> 00:13:33,320 اور اس کے بعد میں زیادہ کچھ کرنے کے لے ایک لنک کی فہرست کی طرح دلچسپ 337 00:13:33,320 --> 00:13:36,660 اور یہاں تک کہ اس سے بھی میں ان کو اکٹھا زیادہ دلچسپ آنکڑا ڈھانچہ. 338 00:13:36,660 --> 00:13:39,630 اور یقینا، یہ بھی کریں گے ایک ہیش میز بلایا جائے، 339 00:13:39,630 --> 00:13:42,610 جس کے تحت صف ہے واقعی ہیش میز، 340 00:13:42,610 --> 00:13:45,600 لیکن ہے کہ ہیش ٹیبل ہے زنجیروں، تاکہ، بات کرنے کے لئے 341 00:13:45,600 --> 00:13:50,220 کہ ترقی کر سکتا ہے یا کی بنیاد پر سکڑ عناصر کی تعداد آپ داخل کرنا چاہتے ہیں. 342 00:13:50,220 --> 00:13:52,990 >> اب، اس کے مطابق، کیا ہے اب وقت چل رہا ہے؟ 343 00:13:52,990 --> 00:13:58,030 میں نے کسی کو داخل کرنے کے لیے چاہتے ہیں، تو 31 اکتوبر کو جن کی سالگرہ ہے، 344 00:13:58,030 --> 00:13:59,040 جہاں وہ یا وہ جاتا ہے؟ 345 00:13:59,040 --> 00:14:00,530 346 00:14:00,530 --> 00:14:01,030 ٹھیک ہے. 347 00:14:01,030 --> 00:14:02,819 یہ 31 کا کہنا ہے کہ جہاں بہت سے نیچے دیئے گئے. 348 00:14:02,819 --> 00:14:03,610 اور یہ کہ بالکل صحیح ہے. 349 00:14:03,610 --> 00:14:05,060 جو مسلسل وقت تھا. 350 00:14:05,060 --> 00:14:08,760 لیکن ہم کسی اور کو تلاش کیا تو جن کی سالگرہ، چلو دیکھتے ہیں کیا جاتا ہے، 351 00:14:08,760 --> 00:14:10,950 اکتوبر، نومبر، دسمبر 31؟ 352 00:14:10,950 --> 00:14:12,790 جہاں وہ یا وہ جانے کے لئے جا رہی ہے؟ 353 00:14:12,790 --> 00:14:13,290 ایک ہی بات. 354 00:14:13,290 --> 00:14:13,970 اگرچہ دو قدم. 355 00:14:13,970 --> 00:14:15,303 کہ یہ اگرچہ مسلسل، ہے نہ؟ 356 00:14:15,303 --> 00:14:16,360 357 00:14:16,360 --> 00:14:16,860 ٹھیک ہے. 358 00:14:16,860 --> 00:14:17,840 اس وقت یہ ہے. 359 00:14:17,840 --> 00:14:20,570 لیکن عام کیس میں، ہم شامل زیادہ سے زیادہ لوگ، 360 00:14:20,570 --> 00:14:23,790 probabilistically، ہم جا رہے ہیں زیادہ سے زیادہ collisions سے حاصل کرنے کے لئے. 361 00:14:23,790 --> 00:14:26,820 >> اب یہ ایک چھوٹی سی ہے بہتر تکنیکی طور پر ہے کیونکہ 362 00:14:26,820 --> 00:14:34,580 اب میری زنجیروں میں ہو سکتا ہے بدترین صورت کب تک؟ 363 00:14:34,580 --> 00:14:38,890 میں نے اس سے زیادہ میں ن لوگ داخل تو بہتر آنکڑا ڈھانچہ، ن لوگ، 364 00:14:38,890 --> 00:14:41,080 بدترین صورت میں یہ ن ہونے جا رہا ہے. 365 00:14:41,080 --> 00:14:41,815 آخر کیوں؟ 366 00:14:41,815 --> 00:14:43,332 >> سامعین: کیونکہ اگر ہر کوئی اسی سالگرہ ہے، 367 00:14:43,332 --> 00:14:44,545 وہ ایک لائن ہو جا رہے ہیں. 368 00:14:44,545 --> 00:14:45,420 DAVID MALAN: کامل. 369 00:14:45,420 --> 00:14:47,480 یہ ایک تھوڑا contrived ہو سکتا لیکن صحیح معنوں میں بدترین صورت میں، 370 00:14:47,480 --> 00:14:50,117 ہر کوئی ایک ہی سالگرہ ہے، آپ ہو آدانوں دیئے، 371 00:14:50,117 --> 00:14:51,950 آپ کو ایک کی ضرورت کے لئے جا رہے ہیں بڑے پیمانے پر طویل سلسلہ. 372 00:14:51,950 --> 00:14:54,241 اور اس طرح، آپ کو یہ ایک کہہ سکتے ہیں میز ہیش، لیکن واقعی یہ بات ہے 373 00:14:54,241 --> 00:14:56,810 کے ساتھ صرف ایک بڑے پیمانے پر لنک کی فہرست ضائع شدہ جگہ کی ایک پوری بہت. 374 00:14:56,810 --> 00:15:00,460 لیکن عام طور پر، ہم فرض ہے کہ اگر کم از کم سالگرہ uniform-- ہیں 375 00:15:00,460 --> 00:15:01,750 اور یہ شاید نہیں ہے. 376 00:15:01,750 --> 00:15:02,587 میں نے اس کی قضاء میں ہوں. 377 00:15:02,587 --> 00:15:04,420 لیکن ہم مان لیتے ہیں، کے لئے بحث کی خاطر 378 00:15:04,420 --> 00:15:07,717 پھر کیا یہ اصول میں، تو ہو اس عمودی نمائندگی ہے 379 00:15:07,717 --> 00:15:11,050 صف کے، اچھی طرح سے تو امید ہے کہ تم ہو ہیں، آپ جانتے ہیں کہ زنجیروں کو حاصل کرنے کے لئے جا، 380 00:15:11,050 --> 00:15:15,880 موٹے طور پر ایک ہی لمبائی ہے جہاں سے ہر ایک ان مہینے کے ایک دن کی نمائندگی کرتا ہے. 381 00:15:15,880 --> 00:15:19,930 >> مہینے میں 31 دن ہے تو اب، کہ واقعی میرا چلانے کے وقت کا مطلب 382 00:15:19,930 --> 00:15:25,230 31 سے زیادہ بڑا این اے، ہے جو لکیری سے بہتر محسوس کرتی. 383 00:15:25,230 --> 00:15:27,950 لیکن میں سے ایک کیا تھا کہ ہمارے وعدوں ہفتے کے ایک جوڑے 384 00:15:27,950 --> 00:15:31,145 پہلے یہ اظہار کرنے کے لئے آئے ہیں جب بھی ایک الگورتھم کی رننگ ٹائم کیا ہے؟ 385 00:15:31,145 --> 00:15:33,450 386 00:15:33,450 --> 00:15:35,190 بس صرف اعلی کے حکم کی اصطلاح کی طرف دیکھو. 387 00:15:35,190 --> 00:15:35,690 ٹھیک ہے نا؟ 388 00:15:35,690 --> 00:15:37,400 31 ضرور مددگار ہے. 389 00:15:37,400 --> 00:15:39,610 لیکن یہ اب بھی بڑا این اے ہے. 390 00:15:39,610 --> 00:15:41,730 لیکن موضوعات میں سے ایک کا مسئلہ پانچ سیٹ 391 00:15:41,730 --> 00:15:43,950 کرنے کی جا رہی ہے بالکل کہ تسلیم کرتے ہیں، 392 00:15:43,950 --> 00:15:47,320 asymptotically، نظریاتی طور پر یہ آنکڑا ڈھانچہ 393 00:15:47,320 --> 00:15:50,470 صرف سے بہتر نہیں ہے ایک زوردار لنک کی فہرست. 394 00:15:50,470 --> 00:15:53,550 اور یقینا، بدترین صورت میں، اس ہیش ٹیبل کہ میں devolve سکتا. 395 00:15:53,550 --> 00:15:57,620 >> لیکن حقیقی دنیا میں، ہمارے ساتھ انسانوں اپنے ہی میکس یا پی سی یا جو کچھ بھی ہے کہ 396 00:15:57,620 --> 00:16:01,240 اور حقیقی دنیا کو چلا رہے ہیں حقیقی دنیا کے ڈیٹا پر سافٹ ویئر، 397 00:16:01,240 --> 00:16:03,260 تم کس الگورتھم کو ترجیح دیتے ہیں کے لئے جا رہے ہیں؟ 398 00:16:03,260 --> 00:16:09,180 آخر اقدامات یا لیتا ہے کہ ایک کے این 31 اقدامات کی طرف سے تقسیم کیا لیتا ہے کہ ایک کے 399 00:16:09,180 --> 00:16:12,900 ڈیٹا کا کچھ ٹکڑا تلاش کرنے کے لئے یا کچھ معلومات تلاش کرنے کے لئے؟ 400 00:16:12,900 --> 00:16:16,580 I، بالکل 31 بناتا مطلب حقیقی دنیا میں ایک فرق. 401 00:16:16,580 --> 00:16:18,540 یہ 31 گنا تیز ہے. 402 00:16:18,540 --> 00:16:20,880 اور ہم انسان یقینی طور پر ہیں اس کی تعریف کرنے کے لئے جا. 403 00:16:20,880 --> 00:16:23,004 >> تو وجود میں ائی کا احساس وہاں اصل کے درمیان 404 00:16:23,004 --> 00:16:25,920 نظریاتی طور پر ان چیزوں کے بارے میں بات ضرور اور asymptotically جس 405 00:16:25,920 --> 00:16:28,760 ہم نے دیکھا کے طور پر اہمیت کی حامل ہے، لیکن حقیقی دنیا میں، 406 00:16:28,760 --> 00:16:32,930 آپ کو صرف کرنے کے بارے میں پرواہ ہے، اگر جنرل آدانوں کے لئے انسانی خوش، 407 00:16:32,930 --> 00:16:36,010 تم بہت اچھی طرح قبول کرنے کے لئے چاہتے ہو سکتا ہے جی ہاں، یہ لکیری ہے، یہ حقیقت ہے کہ، 408 00:16:36,010 --> 00:16:38,360 لیکن یہ 31 گنا تیز ہے مقابلے لکیری ہو سکتا ہے. 409 00:16:38,360 --> 00:16:41,610 اور بہتر ابھی تک، ہم صرف کرنے کی ضرورت نہیں ایک پیدائش طرح صوابدیدی کچھ کرنا، 410 00:16:41,610 --> 00:16:44,030 ہم تھوڑا خرچ کر سکتے ہیں زیادہ وقت اور چالاکی 411 00:16:44,030 --> 00:16:47,140 اور ہم کیا کر سکتے ہیں کے بارے میں سوچتے ہیں، دیئے گئے ایک شخص کے نام اور شاید 412 00:16:47,140 --> 00:16:50,130 ان کے تاریخ پیدائش ان لوگوں کو اکٹھا کرنے اجزاء کچھ جاننے کی 413 00:16:50,130 --> 00:16:52,720 کہ صحیح معنوں میں زیادہ ہے وردی اور کم سے Jaggy، 414 00:16:52,720 --> 00:16:56,250 تو یہ تصویر کے مقابلے میں بات کرنے کے لئے فی الحال یہ ہو سکتا ہے سے پتہ چلتا ہے. 415 00:16:56,250 --> 00:16:57,750 ہم کس طرح کوڈ میں اس کو نافذ کر سکتا ہے؟ 416 00:16:57,750 --> 00:17:00,280 ویسے، مجھے وہ ہم تجویز کرتے ہیں صرف ہم نے کچھ نحو قرضے لے 417 00:17:00,280 --> 00:17:01,799 اس طرح اب تک ایک جوڑے بار استعمال کیا. 418 00:17:01,799 --> 00:17:03,590 اور میں وضاحت کرنے کے لئے جا رہا ہوں ایک نوڈ، جس میں دوبارہ 419 00:17:03,590 --> 00:17:06,812 کچھ کے لئے ایک عام اصطلاح ہے کچھ ڈیٹا ڈھانچے کے لئے کنٹینر. 420 00:17:06,812 --> 00:17:09,020 میں نے اس تجویز کرنے جا رہا ہوں ایک تار وہاں میں جا رہی ہے. 421 00:17:09,020 --> 00:17:11,369 لیکن ہمیں لینے شروع کرنے جا رہے ہیں اب بند پہیوں تربیت والوں. 422 00:17:11,369 --> 00:17:13,230 >> کوئی زیادہ CS50 لائبریری واقعی، آپ چاہتے ہیں جب تک کہ 423 00:17:13,230 --> 00:17:15,230 آپ کی آخری کے لئے اس کا استعمال کرنے کے لئے جو کہ ٹھیک ہے منصوبے،، 424 00:17:15,230 --> 00:17:18,569 لیکن اب ہم واپس ھیںچو جا رہے ہیں پردے اور یہ صرف ایک چار ستارہ ہے کہیں. 425 00:17:18,569 --> 00:17:22,069 لفظ تو وہاں جا رہا ہے سوال میں اس شخص کا نام. 426 00:17:22,069 --> 00:17:25,079 اور اب میں ایک لنک ہے یہاں اگلے نوڈ 427 00:17:25,079 --> 00:17:28,170 ان کی نمائندگی کرتے ہیں، تا کہ نوڈس میں سے ہر ایک 428 00:17:28,170 --> 00:17:30,950 چین میں، ممکنہ طور پر، ایک لنک کی فہرست کے. 429 00:17:30,950 --> 00:17:34,090 >> اور اب میں کس طرح کا اعلان کرتے ہیں ہیش ٹیبل خود؟ 430 00:17:34,090 --> 00:17:36,660 میں کس طرح اس پورے ڈھانچے کا اعلان کروں؟ 431 00:17:36,660 --> 00:17:40,960 ویسے، واقعی، زیادہ میں نے ایک پوائنٹر استعمال کیا کی طرح ایک فہرست میں سے صرف پہلی عنصر 432 00:17:40,960 --> 00:17:44,510 اس سے پہلے، اسی طرح میں نے صرف کہہ سکتے ہیں میں نے صرف اشارہ کے ایک گروپ کی ضرورت ہے 433 00:17:44,510 --> 00:17:46,270 اس پورے ہیش میز کے نفاذ کے لیے. 434 00:17:46,270 --> 00:17:49,484 میں ایک صف کے لئے جا رہا ہوں ہیش میز کے لئے بلایا ٹیبل. 435 00:17:49,484 --> 00:17:50,900 یہ سائز صلاحیت کے ہونے جا رہا ہے. 436 00:17:50,900 --> 00:17:52,525 کہ اس میں فٹ کر سکتے ہیں کس طرح بہت سے عناصر ہے. 437 00:17:52,525 --> 00:17:56,180 اور اس میں ان عناصر میں سے ہر ایک سرنی ایک نوڈ کے سٹار بننے جا رہی ہے. 438 00:17:56,180 --> 00:17:56,810 آخر کیوں؟ 439 00:17:56,810 --> 00:18:00,160 ٹھیک ہے، اس تصویر کے مطابق، کہ میں کیا کر رہا ہوں ہیش ٹیبل کے طور پر عمل درآمد 440 00:18:00,160 --> 00:18:04,330 موثر انداز میں آغاز صرف ہے ہم عمودی طور پر تیار کی ہے کہ اس صف، 441 00:18:04,330 --> 00:18:06,820 جن کے چوکوں میں سے ہر ایک ایک پوائنٹر کی نمائندگی کرتا ہے. 442 00:18:06,820 --> 00:18:09,170 والوں کہ slashes کے لئے ہے کہ ان کے ذریعے صرف شہوت انگیز null ہیں. 443 00:18:09,170 --> 00:18:11,410 اور ہیں کہ پڑے درست کرنے کے لئے کی جا رہی تیر 444 00:18:11,410 --> 00:18:16,140 اصل اصل نوڈ تک اشارہ ہیں، ایک لنک کی فہرست کے آغاز لہذا. 445 00:18:16,140 --> 00:18:19,050 >> تو یہاں، پھر، کہ ہم کس طرح ہو سکتی ہے ایک ہیش میز پر عملدرآمد ہے کہ 446 00:18:19,050 --> 00:18:21,580 علیحدہ chaining لاگو کرتی ہے. 447 00:18:21,580 --> 00:18:22,840 اب ہم بہتر کر سکتا ہوں؟ 448 00:18:22,840 --> 00:18:25,632 ٹھیک ہے میں نے کل وقت وعدہ کیا تھا کہ ہم مسلسل وقت حاصل کر سکتے ہیں. 449 00:18:25,632 --> 00:18:27,381 اور میں اس قسم کی نے تمہیں دیا یہاں مسلسل وقت، 450 00:18:27,381 --> 00:18:29,850 لیکن اس وقت واقعی نہیں کہا مسلسل وقت یہ اب بھی ہے کیونکہ 451 00:18:29,850 --> 00:18:31,890 کل پر منحصر عناصر کی تعداد 452 00:18:31,890 --> 00:18:34,500 آپ میں inputting کی رہے آنکڑا ڈھانچہ. 453 00:18:34,500 --> 00:18:35,980 لیکن ہم نے یہ کیا لگتا ہے. 454 00:18:35,980 --> 00:18:39,550 مجھے یہاں کے پردے پر واپس جانے دو. 455 00:18:39,550 --> 00:18:44,520 ، مجھے بھی یہ یہاں پر پیش واضح کرنے دو سکرین، اور میں نے یہ کیا لگتا ہے. 456 00:18:44,520 --> 00:18:49,300 میں نام داخل کرنا چاہتا تھا فرض کریں Daven میں میری آنکڑا ڈھانچہ میں. 457 00:18:49,300 --> 00:18:52,100 >> تو میں نے ایک تار داخل کرنا چاہتے ہیں آنکڑا ڈھانچہ میں Daven. 458 00:18:52,100 --> 00:18:54,370 اگر میرا استعمال نہیں کرتے تو میز ہیش، لیکن میں استعمال کرتے ہیں 459 00:18:54,370 --> 00:18:56,980 زیادہ ہے کہ کچھ درخت کی طرح ایک خاندان کے درخت، جہاں کی طرح 460 00:18:56,980 --> 00:18:59,670 تم پر کچھ جڑ ہے سب سے اوپر اور پھر نوڈس اور پتے 461 00:18:59,670 --> 00:19:01,440 کہ نیچے کی طرف اور باہر جاؤ. 462 00:19:01,440 --> 00:19:04,450 ، اس کے بعد کہ مجھے لگتا ہے Daven کا داخل کرنا چاہتے ہیں 463 00:19:04,450 --> 00:19:06,430 فی الحال ایک خالی فہرست ہے کیا میں. 464 00:19:06,430 --> 00:19:09,780 میں مندرجہ ذیل کام کرنے جا رہا ہوں: میں ہوں اس خاندان میں ایک نوڈ بنانے کے لئے جا 465 00:19:09,780 --> 00:19:15,170 درخت کی طرح آنکڑا ڈھانچہ لگ رہا ہے کہ ایک چھوٹا سا اس طرح، جن میں سے ہر 466 00:19:15,170 --> 00:19:19,640 مستطیل،، چلو کا کہنا ہے کی ہے اس میں اب 26 عناصر کے لئے. 467 00:19:19,640 --> 00:19:21,650 اور خلیات میں سے ہر ایک اس صف میں جا رہا ہے 468 00:19:21,650 --> 00:19:23,470 ایک حروف تہجی کے خط کی نمائندگی کرنے کی. 469 00:19:23,470 --> 00:19:28,190 >> خاص طور پر، میں نے علاج کے لئے جا رہا ہوں یہ ایک، پھر بی، پھر سی، تو D ہے 470 00:19:28,190 --> 00:19:29,310 یہاں ایک کے. 471 00:19:29,310 --> 00:19:32,940 تو یہ مؤثر طریقے سے کی جا رہی ہے خط D. کی نمائندگی 472 00:19:32,940 --> 00:19:36,040 لیکن Daven کی کی تمام شامل کرنے کے لئے میں تھوڑا سا زیادہ کیا کرنے کی ضرورت کا نام ہے. 473 00:19:36,040 --> 00:19:37,840 تو میں نے سب سے پہلے اس سے بات کرنے، ہیش کرنے جا رہا ہوں. 474 00:19:37,840 --> 00:19:41,049 میں نے پہلے خط کو دیکھنے کے لئے جا رہا ہوں میں Daven کی واضح طور پر ایک ڈی ہے جس میں، 475 00:19:41,049 --> 00:19:42,840 اور میں مختص کی جا رہی ہوں لگتا ہے کہ ایک نوڈ 476 00:19:42,840 --> 00:19:45,570 جیسے بڑے ایک بڑا مستطیل this-- پورے حروف تہجی کو فٹ کرنے کے لئے کافی. 477 00:19:45,570 --> 00:19:47,140 >> اب D سے کیا جاتا ہے. 478 00:19:47,140 --> 00:19:49,720 اب اے ڈی-اے-وی-E-N مقصد ہے. 479 00:19:49,720 --> 00:19:51,220 تو اب میں کیا کرنے جا رہا ہوں یہ ہے. 480 00:19:51,220 --> 00:19:54,027 جیسے ہی میں نے D نوٹس شروع کر دیا کے طور پر وہاں کوئی پوائنٹر نہیں ہے. 481 00:19:54,027 --> 00:19:56,860 یہ، اس وقت ردی کی ٹوکری اقدار ہے یا میں نے شہوت انگیز null اس کی ابتدا ہو سکتی ہے. 482 00:19:56,860 --> 00:19:59,630 لیکن میرے ساتھ جا رکھنے دیں ایک درخت کی تعمیر کے اس خیال. 483 00:19:59,630 --> 00:20:04,260 مجھے ان میں سے ایک مختص دو اس میں 26 عناصر ہے کہ نوڈس. 484 00:20:04,260 --> 00:20:05,150 >> اور تم کیا جانتے ہو؟ 485 00:20:05,150 --> 00:20:09,130 اس میموری میں صرف ایک نوڈ ہے کہ اگر میں نے ایک struct کا استعمال کرتے ہوئے، malloc کے ساتھ پیدا 486 00:20:09,130 --> 00:20:11,240 ہم جلد ہی نظر آئے گا کے طور پر، مجھے this-- کرنے جا رہا ہوں 487 00:20:11,240 --> 00:20:14,450 میں نے ایک تیر کے نشان کو اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں نیچے D نمائندگی اس چیز 488 00:20:14,450 --> 00:20:15,860 اس نئے نوڈ. 489 00:20:15,860 --> 00:20:19,240 اور، سب سے پہلے اگلے اب Daven کے نام خط، 490 00:20:19,240 --> 00:20:24,150 V-- D-A-V-- میں آگے جانے کے لئے جا رہا ہوں اور اس طرح دوسرے نوڈ کو اپنی طرف متوجہ، 491 00:20:24,150 --> 00:20:30,150 جس کے تحت، یہاں V کے عناصر، جس ہم instance-- افوہ کے طرف متوجہ کریں گے. 492 00:20:30,150 --> 00:20:31,020 ہم وہاں نہیں اپنی طرف متوجہ کرے گا. 493 00:20:31,020 --> 00:20:31,936 یہ یہاں جانا جا رہا ہے. 494 00:20:31,936 --> 00:20:32,890 495 00:20:32,890 --> 00:20:35,712 >> پھر ہم کرنے جا رہے ہیں یہ وی پر غور 496 00:20:35,712 --> 00:20:44,920 اور پھر یہاں نیچے ہم انڈیکس لئے جا رہے ہیں نیچے V سے ہم E. غور کروں گا کیا میں 497 00:20:44,920 --> 00:20:50,100 اور پھر یہاں سے ہم کرنے جا رہے ہیں یہاں ان مراکز میں سے ایک ہے جانا. 498 00:20:50,100 --> 00:20:52,930 اور اب ہم جواب دینے کے لئے ایک سوال ہے. 499 00:20:52,930 --> 00:20:57,840 میں نے کسی نہ کسی طرح اس بات کی نشاندہی کرنے کی ضرورت ہے ہم سٹرنگ Daven کے آخر میں ہیں. 500 00:20:57,840 --> 00:20:59,490 تو میں صرف یہ نل چھوڑ سکتا. 501 00:20:59,490 --> 00:21:02,670 >> لیکن ہم Daven کی کیا ہے تو بھی پورا نام، جس 502 00:21:02,670 --> 00:21:04,280 ہم، Davenport نے کہا ہے کے طور پر، ہے؟ 503 00:21:04,280 --> 00:21:06,970 لہذا Daven کیا ہے اگر اصل میں ایک substring، 504 00:21:06,970 --> 00:21:08,960 ایک بہت طویل سٹرنگ کا ایک سابقہ؟ 505 00:21:08,960 --> 00:21:11,450 ہم صرف مستقل طور پر نہیں کر سکتے ہیں کچھ بھی نہیں کی جا رہی ہے کا کہنا ہے کہ 506 00:21:11,450 --> 00:21:14,410 کیونکہ ہم کر سکتے تھے، وہاں جانے کے لئے Davenport نے طرح ایک لفظ داخل کبھی نہیں 507 00:21:14,410 --> 00:21:15,840 یہ آنکڑا ڈھانچہ میں 508 00:21:15,840 --> 00:21:19,560 >> تو ہم کیا کر سکتے تھے اس کے بجائے ہے ان عناصر میں سے ہر ایک کا علاج 509 00:21:19,560 --> 00:21:22,170 کے طور پر شاید دو اندوز ان کے اندر عناصر. 510 00:21:22,170 --> 00:21:24,810 ایک، یقینا، ایک پوائنٹر ہے جیسا کہ میں کر رہا ہوں. 511 00:21:24,810 --> 00:21:27,100 ان باکس میں سے ہر پس صرف ایک سیل نہیں ہے. 512 00:21:27,100 --> 00:21:29,855 لیکن کیا اگر سب سے اوپر one-- نیچے ایک کی 513 00:21:29,855 --> 00:21:32,230 کیونکہ، خالی ہونے جا رہا ابھی تک کوئی Davenport نے وہاں ہے. 514 00:21:32,230 --> 00:21:34,197 کیا اگر سب سے اوپر ایک کچھ خاص قدر ہے؟ 515 00:21:34,197 --> 00:21:36,530 اور یہ تھوڑا ہونے جا رہا ہے یہ اس کے سائز کو اپنی طرف متوجہ کرنے کے لئے مشکل. 516 00:21:36,530 --> 00:21:38,130 لیکن یہ صرف ایک نشان ہے. مجھے لگتا. 517 00:21:38,130 --> 00:21:38,920 چیک کریں. 518 00:21:38,920 --> 00:21:44,230 ڈی-اے-وی-E-N ایک تار ہے اس آنکڑا ڈھانچہ میں. 519 00:21:44,230 --> 00:21:48,350 >> اسی اثناء میں، تو مجھے زیادہ جگہ تھی یہاں، میں، P-O-R-T ایسا کر سکتا ہے 520 00:21:48,350 --> 00:21:52,650 اور میں نوڈ میں چیک ڈال سکتے کہ آخر میں خط T ہے. 521 00:21:52,650 --> 00:21:55,460 تو یہ ایک بڑے پیمانے پر ہے پیچیدہ نظر آنے آنکڑا ڈھانچہ. 522 00:21:55,460 --> 00:21:57,210 اور میری لکھاوٹ یقینی طور پر مدد نہیں کرتا. 523 00:21:57,210 --> 00:22:00,043 لیکن میں کچھ داخل کرنا چاہتا تھا ورنہ، ہم کیا کریں گے کے بارے میں غور. 524 00:22:00,043 --> 00:22:03,370 ہم میں ڈیوڈ کو چاہتا تھا تو، ہم، ایک ہی منطق، D-A-V کی پیروی کروں گا 525 00:22:03,370 --> 00:22:08,802 لیکن اب میں اگلے میں اشارہ کریں گے عنصر نہیں E سے، لیکن میں نے سے D. کرنا 526 00:22:08,802 --> 00:22:10,760 ایسا کرنے میں وہاں جا رہا ہے اس درخت میں زیادہ نوڈس. 527 00:22:10,760 --> 00:22:12,325 ہم زیادہ کال malloc کے لئے جا رہے ہیں. 528 00:22:12,325 --> 00:22:14,700 لیکن میں ایک بنانے کے لئے نہیں کرنا چاہتے اس تصویر کے مکمل گندگی. 529 00:22:14,700 --> 00:22:17,710 تو بجائے ایک کو دیکھو کہ پہلے سے تیار کی گئی ہے 530 00:22:17,710 --> 00:22:21,810 ڈاٹ نہیں کے ساتھ اس طرح، ڈاٹ، بندیاں، لیکن صرف مختصر arrays کے. 531 00:22:21,810 --> 00:22:23,950 لیکن مراکز میں سے ہر ایک یہاں اس درخت میں 532 00:22:23,950 --> 00:22:26,700 اسی thing-- نمائندگی کرتا ہے ایک صف کے سائز 26 کے رے. 533 00:22:26,700 --> 00:22:28,860 >> یا ہم بننا چاہتے ہیں تو واقعی مناسب اب، کیا 534 00:22:28,860 --> 00:22:30,790 کسی کے نام کے طور پر اگر ایک apostrophe، چلو 535 00:22:30,790 --> 00:22:35,560 ہر نوڈ اصل میں ہے کہ فرض اس میں 27 کے اشاریہ جات، نہ صرف 26 کی طرح. 536 00:22:35,560 --> 00:22:42,020 تو یہ اب ایک ڈیٹا کی جا رہی ہے ساخت ایک trie-- T-R-I-E بلایا. 537 00:22:42,020 --> 00:22:46,120 قیاس ہے جو ایک trie، ایک درخت کے لئے تاریخی ایک ہوشیار نام 538 00:22:46,120 --> 00:22:49,040 اس کے لئے مرضی کے ہے دوبارہ حاصل کرنے، جس میں کورس کے، 539 00:22:49,040 --> 00:22:50,870 یہ trie کے تو ایک میں ای کے ساتھ ہجے ہے. 540 00:22:50,870 --> 00:22:52,710 لیکن اس trie کی تاریخ ہے. 541 00:22:52,710 --> 00:22:55,860 >> تو ایک trie یہ درخت کی طرح اعداد و شمار ہے ایک خاندان کے درخت کی طرح ساخت 542 00:22:55,860 --> 00:22:57,510 کہ آخر میں اس کی طرح برتاؤ کرتی ہے. 543 00:22:57,510 --> 00:23:00,890 اور یہاں ایک کا صرف ایک اور مثال ہے دوسرے لوگوں کے ناموں کی مکمل جھوبڈ. 544 00:23:00,890 --> 00:23:03,540 لیکن اب سوال ہاتھ میں کیا ہے 545 00:23:03,540 --> 00:23:08,070 ہم arguably سب ایک زیادہ متعارف کرانے کی طرف سے حاصل کی پیچیدہ آنکڑا ڈھانچہ، اور ایک، 546 00:23:08,070 --> 00:23:09,870 سچ کہوں تو، اس میموری کا ایک بہت استعمال کرتا ہے. 547 00:23:09,870 --> 00:23:11,703 >> ، کیونکہ اگرچہ لمحے میں، میں نے صرف ہوں 548 00:23:11,703 --> 00:23:15,050 D 'اس پوائنٹر استعمال کرتے ہوئے اور ایک وی اور ES اور این ایس، اور 549 00:23:15,050 --> 00:23:16,700 میں میموری کا بہت کی ایک heck برباد کر رہا ہوں. 550 00:23:16,700 --> 00:23:18,030 551 00:23:18,030 --> 00:23:22,660 مگر میں ایک وسائل کہاں خرچ کرتے ہیں، میں پیچھے ایک اور حاصل کرتے ہیں کے لئے ہوتے ہیں. 552 00:23:22,660 --> 00:23:26,020 ، میں نے زیادہ جگہ خرچ کر رہا ہوں تو اگر شاید امید کیا ہے؟ 553 00:23:26,020 --> 00:23:27,407 مجھے کیا کم خرچ کر رہا ہوں کہ؟ 554 00:23:27,407 --> 00:23:28,240 سامعین: کم وقت. 555 00:23:28,240 --> 00:23:28,990 DAVID MALAN: وقت. 556 00:23:28,990 --> 00:23:30,320 اب کیوں کہ ہو سکتا ہے؟ 557 00:23:30,320 --> 00:23:33,880 ویسے، اندراج کیا ہے وقت، اب بڑے اے کی شرائط میں، 558 00:23:33,880 --> 00:23:37,660 Daven طرح ایک نام کے یا Davenport نے یا ڈیوڈ؟ 559 00:23:37,660 --> 00:23:39,340 ویسے، Daven پانچ قدم تھا. 560 00:23:39,340 --> 00:23:42,350 Davenport نے نو کے مراحل ہوں گے، تو یہ چند قدم ہو گا. 561 00:23:42,350 --> 00:23:44,250 ڈیوڈ کے ساتھ ساتھ پانچ قدم ہو گا. 562 00:23:44,250 --> 00:23:47,230 لہذا ان ٹھوس ہیں نمبرز، لیکن یقینا وہاں ہے 563 00:23:47,230 --> 00:23:49,550 پر پابند بالائی کسی کا نام کی لمبائی. 564 00:23:49,550 --> 00:23:52,240 اور یقینا، مسئلہ میں پانچ تصریح کے سیٹ، 565 00:23:52,240 --> 00:23:54,050 ہم تجویز کرنے جا رہے ہیں یہ کچھ ہے کہ 566 00:23:54,050 --> 00:23:55,470 کہ 40 کچھ عجیب حروف ہے. 567 00:23:55,470 --> 00:23:58,180 >> حقیقت پسندانہ، کوئی نہیں ہے ایک infinitely طویل نام، 568 00:23:58,180 --> 00:24:01,542 کہنے کے لئے ہے جو کہ ایک کی لمبائی نام یا سٹرنگ کی لمبائی ہم شاید کیا 569 00:24:01,542 --> 00:24:03,750 ریاست کے کچھ ہے ساخت arguably سب کیا ہے؟ 570 00:24:03,750 --> 00:24:05,550 571 00:24:05,550 --> 00:24:06,250 یہ مسلسل ہے. 572 00:24:06,250 --> 00:24:06,430 ٹھیک ہے نا؟ 573 00:24:06,430 --> 00:24:09,310 اس طرح ایک بڑی مسلسل ہو سکتا ہے 40 کچھ ہے، لیکن یہ مسلسل جاری ہے. 574 00:24:09,310 --> 00:24:13,752 اور یہ کہ کتنے پر کوئی انحصار ہے دیگر نام اس آنکڑا ڈھانچہ میں ہیں. 575 00:24:13,752 --> 00:24:15,460 دوسرے الفاظ میں، میں نے تو اب داخل کرنا چاہتا تھا 576 00:24:15,460 --> 00:24:20,540 کولٹن یا جبرائیل یا روب یا کیا Zamyla یا ایلیسن یا Belinda کی یا کسی بھی دوسرے ناموں 577 00:24:20,540 --> 00:24:23,940 اس ڈیٹا میں عملے سے ساخت، وقت چل رہا ہے 578 00:24:23,940 --> 00:24:26,750 کے دوسرے ناموں ڈالنے تمام متاثر میں ہونے جا رہا 579 00:24:26,750 --> 00:24:30,220 کس طرح بہت سے دوسرے عناصر کی طرف سے ہیں پہلے سے ہی آنکڑا ڈھانچہ میں؟ 580 00:24:30,220 --> 00:24:31,040 ایسا نہیں ہے. 581 00:24:31,040 --> 00:24:31,540 ٹھیک ہے نا؟ 582 00:24:31,540 --> 00:24:36,150 ہم مؤثر طریقے سے استعمال کر رہے ہیں کیونکہ اس کثیر پرت ہیش ٹیبل. 583 00:24:36,150 --> 00:24:38,280 اور کی رننگ ٹائم ان کارروائیوں میں سے کسی 584 00:24:38,280 --> 00:24:41,510 کی تعداد پر نہیں انحصار ہے آنکڑا ڈھانچہ میں ہیں کہ عناصر 585 00:24:41,510 --> 00:24:43,090 یا یہ کہ بالآخر جا رہے ہیں آنکڑا ڈھانچہ میں ہونا، 586 00:24:43,090 --> 00:24:44,714 لیکن کیا خاص کی لمبائی پر؟ 587 00:24:44,714 --> 00:24:46,500 588 00:24:46,500 --> 00:24:49,200 >> ہونے سٹرنگ ، داخل کرتا ہے جس 589 00:24:49,200 --> 00:24:52,580 اس asymptotically مسلسل ایک کی time-- بڑے اے. 590 00:24:52,580 --> 00:24:54,720 اور واضح طور سے، صرف اندر حقیقی دنیا، یہ 591 00:24:54,720 --> 00:24:58,380 Daven کا نام لیتا ڈالنے کا مطلب پانچ اقدامات، یا Davenport نے نو کی طرح 592 00:24:58,380 --> 00:25:00,100 اقدامات، یا ڈیوڈ پانچ اقدامات. 593 00:25:00,100 --> 00:25:03,071 کہ خوبصورت رفو چھوٹے چلانے اوقات ہے. 594 00:25:03,071 --> 00:25:05,320 اور، یقینا، کہ ایک بہت ہے اچھی بات یہ ہے، خاص طور پر جب 595 00:25:05,320 --> 00:25:08,126 یہ کل پر منحصر نہیں ہے وہاں میں عناصر کی تعداد. 596 00:25:08,126 --> 00:25:10,500 تو ہم اس کو عمل درآمد کر سکتے ہیں کہ کس طرح کوڈ میں ڈھانچے کی قسم ہے؟ 597 00:25:10,500 --> 00:25:12,900 یہ تھوڑا زیادہ ہے پیچیدہ، لیکن اب بھی یہ بات ہے 598 00:25:12,900 --> 00:25:15,050 میں سے صرف ایک درخواست بنیادی عمارت بلاکس. 599 00:25:15,050 --> 00:25:17,830 مجھے وضاحت کرنے جا رہا ہوں ہم نوڈ مندرجہ ذیل ہے: 600 00:25:17,830 --> 00:25:21,100 bool کے word-- بلایا اور اس کچھ کہا جا سکتا. 601 00:25:21,100 --> 00:25:23,970 لیکن bool کے کی نمائندگی کرتا ہے کیا میں ایک چیک نشان کے طور پر متوجہ کیا. 602 00:25:23,970 --> 00:25:24,490 جی ہاں. 603 00:25:24,490 --> 00:25:26,720 یہ ایک تار کے آخر ہے اس آنکڑا ڈھانچہ میں. 604 00:25:26,720 --> 00:25:30,702 >> اور، کورس کی، نوڈ کا ستارہ بچوں کو وہاں حوالہ دیتے ہوئے ہے. 605 00:25:30,702 --> 00:25:32,410 اور، یقینا، صرف پسند ایک خاندان کے درخت، آپ 606 00:25:32,410 --> 00:25:34,370 نوڈس پر غور کرے گا کہ بند پھانسی کر رہے ہیں 607 00:25:34,370 --> 00:25:36,920 بعض والدین کے سب سے نیچے کے عنصر بچوں بننے کے لئے. 608 00:25:36,920 --> 00:25:40,510 اور اس طرح بچوں کی جا رہی ہے 27 کے ایک صف، 27th کے ایک ہو 609 00:25:40,510 --> 00:25:41,680 صرف apostrophe کے لئے کیا جا رہا ہے. 610 00:25:41,680 --> 00:25:43,390 ہم الگ الگ کرنے کے لئے جا رہے ہیں خاص معاملہ ہے کہ کے. 611 00:25:43,390 --> 00:25:45,400 تاکہ آپ کو یقین ہو سکتا ہے اپوسٹروفاس کے ساتھ نام. 612 00:25:45,400 --> 00:25:47,399 شاید بھی ہائفن کرنا چاہئے وہاں میں جانا، لیکن تم سب 613 00:25:47,399 --> 00:25:50,330 P سیٹ 5 ہم صرف دیکھ بھال میں دیکھیں حروف اور اپوسٹروفاس بارے. 614 00:25:50,330 --> 00:25:52,990 >> اور پھر کس طرح آپ کی نمائندگی کرتے ہیں آنکڑا ڈھانچہ خود؟ 615 00:25:52,990 --> 00:25:56,454 آپ کیسے جڑ کی نمائندگی کرتے ہیں اس trie کی، تو بات کرنے کے لئے؟ 616 00:25:56,454 --> 00:25:59,620 ویسے، صرف آپ کو، ایک لنک کی فہرست کے ساتھ پسند پہلا عنصر کو ایک پوائنٹر کی ضرورت. 617 00:25:59,620 --> 00:26:04,270 ایک trie ساتھ آپ کو صرف ایک کی ضرورت ہے اس trie کی جڑ پوائنٹر. 618 00:26:04,270 --> 00:26:07,290 اور وہاں سے آپ ہیش کر سکتے ہیں آپ کے راستے نیچے گہرے اور عمیق 619 00:26:07,290 --> 00:26:10,460 ساخت میں ہر دوسرے نوڈ. 620 00:26:10,460 --> 00:26:13,440 لہذا صرف یہ کر سکتے ہیں کے ساتھ ہم اس struct کی نمائندگی کرتے ہیں. 621 00:26:13,440 --> 00:26:15,877 >> اب، اوہ سوال Meanwhile--. 622 00:26:15,877 --> 00:26:17,220 >> سامعین: bool کے لفظ کیا ہے؟ 623 00:26:17,220 --> 00:26:20,490 >> DAVID MALAN: bool کے لفظ ہے صرف اس C اوتار 624 00:26:20,490 --> 00:26:22,920 میں نے بیان کیا ہے کے یہاں، جب اس خانے میں 625 00:26:22,920 --> 00:26:26,000 میں سے ہر ایک کی تقسیم شروع کر دی دو ٹکڑوں میں سرنی کے عناصر. 626 00:26:26,000 --> 00:26:27,600 ایک اگلے نوڈ پوائنٹر ہے. 627 00:26:27,600 --> 00:26:30,280 دوسرے کا ہونا ضروری ہے ایک چیک باکس کی طرح کچھ 628 00:26:30,280 --> 00:26:33,770 ایک نہیں ہے، ہاں کہنے کے لئے یہاں ختم ہوتا ہے کہ Daven لفظ، 629 00:26:33,770 --> 00:26:35,610 ، ہم نہیں چاہتے کیونکہ لمحے، ڈیو میں. 630 00:26:35,610 --> 00:26:39,320 >> ڈیو ایک ہونے جا رہا ہے، اگرچہ جائز لفظ، وہ trie میں نہیں ہے 631 00:26:39,320 --> 00:26:39,830 ابھی تک. 632 00:26:39,830 --> 00:26:40,950 اور D ایک لفظ نہیں ہے. 633 00:26:40,950 --> 00:26:42,770 اور D-A ایک لفظ یا ایک نام نہیں ہے. 634 00:26:42,770 --> 00:26:45,020 نشان لہذا صرف آپ کو ایک بار کی طرف اشارہ کرتا 635 00:26:45,020 --> 00:26:48,190 اس نوڈ ہے مارا حروف کی گزشتہ راہ 636 00:26:48,190 --> 00:26:50,700 آپ کو داخل کیا ہے کہ اصل میں ایک تار. 637 00:26:50,700 --> 00:26:53,660 تو یہ سب bool کے ہے ہمارے لئے وہاں کیا کر رہی ہے. 638 00:26:53,660 --> 00:26:55,500 >> کوشش کرتا ہے پر کوئی سوال؟ 639 00:26:55,500 --> 00:26:56,215 جی ہاں. 640 00:26:56,215 --> 00:26:58,035 >> سامعین: وورلیپ کیا ہے؟ 641 00:26:58,035 --> 00:26:59,945 کیا آپ کو ایک ڈیو اور ایک Daven ہو تو؟ 642 00:26:59,945 --> 00:27:00,820 DAVID MALAN: کامل. 643 00:27:00,820 --> 00:27:02,580 کیا آپ کو ایک ڈیو اور ایک Daven ہو تو؟ 644 00:27:02,580 --> 00:27:06,240 ہم داخل تو، اگر، ایک عرفیت کہنا David-- Dave-- D-A-V-E کے لئے؟ 645 00:27:06,240 --> 00:27:07,370 646 00:27:07,370 --> 00:27:08,700 یہ اصل سپر آسان ہے. 647 00:27:08,700 --> 00:27:10,325 تو ہم نے صرف چار اقدامات کرنے جا رہے ہیں. 648 00:27:10,325 --> 00:27:11,042 649 00:27:11,042 --> 00:27:15,847 ڈی-اے-وی-E. اور میں جانتا ہوں کہ کیا کرنا ہے میں نے اس کے چوتھی نوڈ مارا ایک بار کرتے ہیں؟ 650 00:27:15,847 --> 00:27:16,680 صرف چیک کرنے کے لئے جا. 651 00:27:16,680 --> 00:27:18,000 ہم نے پہلے ہی جانا اچھا ہو. 652 00:27:18,000 --> 00:27:18,840 کیا کیا. 653 00:27:18,840 --> 00:27:19,750 چار اقدامات. 654 00:27:19,750 --> 00:27:21,590 asymptotically مسلسل وقت. 655 00:27:21,590 --> 00:27:26,300 اور اب ہم کہ دونوں ڈیو دلالت کی ہے اور Daven ساخت میں ڈور ہیں. 656 00:27:26,300 --> 00:27:27,710 لہذا کوئی مسئلہ نہیں. 657 00:27:27,710 --> 00:27:30,200 اور کس طرح موجودگی کا نوٹس Daven کے یہ نہیں کیا 658 00:27:30,200 --> 00:27:34,750 کسی بھی زیادہ وقت یا کم لے وقت ڈیو کے لئے اور اس کے برعکس. 659 00:27:34,750 --> 00:27:36,000 >> تو کیا اب ہم اور کیا کر سکتے ہیں؟ 660 00:27:36,000 --> 00:27:40,680 ہم سے پہلے اس استعارہ استعمال کیا ہے ٹرے کے کسی چیز کی نمائندگی. 661 00:27:40,680 --> 00:27:43,380 لیکن یہ پتہ چلا ہے کہ ایک ٹرے کے اسٹیک اصل میں ہے 662 00:27:43,380 --> 00:27:47,187 ایک اور تجریدی ڈیٹا کے demonstrative ایک اعلی سطح آنکڑا ڈھانچہ ٹائپ 663 00:27:47,187 --> 00:27:49,770 آخر میں دن صرف یہ ہے کہ ایک صف یا ایک لنک کی فہرست کی طرح 664 00:27:49,770 --> 00:27:50,970 زیادہ اشیاءہوسکتی یا کچھ اور. 665 00:27:50,970 --> 00:27:53,270 لیکن یہ ایک زیادہ دلچسپ ہے تصوراتی تصور. 666 00:27:53,270 --> 00:27:56,440 ان کی طرح ایک اسٹیک، Mather میں یہاں ٹرے، 667 00:27:56,440 --> 00:27:58,750 عام طور پر کہا جاتا ہے صرف ایک اسٹیک that--. 668 00:27:58,750 --> 00:28:02,540 >> اور اعداد و شمار کے ڈھانچے کی اس قسم میں آپ کو دو آپریشن 669 00:28:02,540 --> 00:28:05,880 آپ کو ایک فون کیا دھکا کے لئے ہے اسٹیک کے لئے کچھ انہوں نے مزید کہا، 670 00:28:05,880 --> 00:28:08,320 ایک اور ٹرے ڈال کی طرح اسٹیک کے سب سے اوپر پر واپس. 671 00:28:08,320 --> 00:28:11,350 آپ جس کا مطلب ہے اور اس کے بعد، پاپ اولین ٹرے اتار. 672 00:28:11,350 --> 00:28:16,210 لیکن ایک اسٹیک ہے کہ کے بارے میں اہم کیا ہے اسے یہ جاننا خصوصیت مل گیا ہے. 673 00:28:16,210 --> 00:28:19,560 ڈائننگ ہال کے عملے کے طور پر ہیں اگلے کھانے کے لئے ٹرے rearranging کی، 674 00:28:19,560 --> 00:28:21,380 کیا ہونے جا رہا ہے کہ کس طرح طالب علموں کے بارے میں سچ 675 00:28:21,380 --> 00:28:22,856 یہ آنکڑا ڈھانچہ کے ساتھ بات چیت؟ 676 00:28:22,856 --> 00:28:24,480 سامعین: انہوں نے ایک پاپ کے لئے جا رہے. 677 00:28:24,480 --> 00:28:26,550 DAVID MALAN: وہ کرنے جا رہے ہیں ایک آف، امید ہے کہ سب سے اوپر پاپ. 678 00:28:26,550 --> 00:28:28,910 نہیں تو یہ صرف پاگل کی طرح نیچے تک تمام راستے پر چلنا. 679 00:28:28,910 --> 00:28:29,070 ٹھیک ہے نا؟ 680 00:28:29,070 --> 00:28:31,620 آنکڑا ڈھانچہ واقعی کی اجازت نہیں دیتا آپ کم از کم نیچے ٹرے پر قبضہ کرنے 681 00:28:31,620 --> 00:28:32,520 آسانی سے. 682 00:28:32,520 --> 00:28:35,040 تو یہ جاننا وہاں ہے ایک اسٹیک کے لئے جائیداد 683 00:28:35,040 --> 00:28:39,730 میں آخری چیز ہے کہ سب سے پہلے ایک باہر ہو جا. 684 00:28:39,730 --> 00:28:43,400 اور کمپیوٹر کے سائنسدانوں کو فون اس پہلے، میں گزشتہ باہر LIFO--. 685 00:28:43,400 --> 00:28:45,540 اور یہ اصل میں ہے دلچسپ ایپلی کیشنز. 686 00:28:45,540 --> 00:28:50,090 یہ ضروری نہیں کہ کچھ کے طور پر کے طور پر واضح نہیں ہے دوسروں، لیکن یہ، یقینا،، مفید ہو سکتا ہے 687 00:28:50,090 --> 00:28:54,040 اور یہ، یقینا، لاگو کیا جا سکتا مختلف طریقوں سے ایک جوڑے میں. 688 00:28:54,040 --> 00:28:58,550 >> تو ایک، اور اصل میں، دو مجھے اس میں کودو نہیں. 689 00:28:58,550 --> 00:28:59,860 بجائے اس کے کیا. 690 00:28:59,860 --> 00:29:03,700 کے تقریبا ہے کہ ایک بھی جائزہ لیں اسی خیال، لیکن یہ تھوڑا منصفانہ ہے. 691 00:29:03,700 --> 00:29:04,200 ٹھیک ہے نا؟ 692 00:29:04,200 --> 00:29:07,560 اگر آپ ان پرستار لڑکوں میں سے ایک ہو یا واقعی ایپل کی مصنوعات کو پسند کرتا ہے کہ لڑکیوں 693 00:29:07,560 --> 00:29:10,130 اور آپ کو 3:00 بجے اٹھی کچھ سٹور پر لائن 694 00:29:10,130 --> 00:29:14,150 بہت تازہ ترین آئی فون حاصل کرنے کے لئے، آپ اس طرح قطار میں ہے ہو سکتا ہے. 695 00:29:14,150 --> 00:29:15,800 >> اب ایک قطار بہت جان بوجھ کر نام ہے. 696 00:29:15,800 --> 00:29:18,190 کیونکہ وہاں یہ ایک لائن ہے اس کے لئے کچھ جانبداری. 697 00:29:18,190 --> 00:29:18,690 ٹھیک ہے نا؟ 698 00:29:18,690 --> 00:29:21,690 آپ نے تو یہ قسم کی چوسا گی ایپل اسٹور میں پہلی وہاں ملا 699 00:29:21,690 --> 00:29:25,700 لیکن آپ کو مؤثر طریقے سے bottommost ہیں ٹرے پھر ایپل کے ملازمین کیونکہ 700 00:29:25,700 --> 00:29:28,189 آخری شخص پاپ والے اصل لائن میں مل گیا. 701 00:29:28,189 --> 00:29:31,230 پوٹ اور قطار، اگرچہ اتنی فعل وہ same-- کے اچھے ہو 702 00:29:31,230 --> 00:29:33,105 یہ صرف اس مجموعہ ہے وسائل کی ہے کہ 703 00:29:33,105 --> 00:29:36,210 وہاں shrink-- بڑھ جا اور اس پر اس عدل کے پہلو، 704 00:29:36,210 --> 00:29:39,634 حقیقی دنیا میں کم از کم، جہاں کارروائیوں آپ ورزش 705 00:29:39,634 --> 00:29:40,800 بنیادی طور پر مختلف ہیں. 706 00:29:40,800 --> 00:29:43,360 ایک قطار A stack-- rather-- ہے کہا جاتا ہے 707 00:29:43,360 --> 00:29:45,320 دو آپریشن: N قطار اور د قطار. 708 00:29:45,320 --> 00:29:46,341 709 00:29:46,341 --> 00:29:48,090 یا آپ ان کو فون کر سکتے ہیں چیزوں میں سے کسی بھی تعداد. 710 00:29:48,090 --> 00:29:50,770 لیکن آپ نے ابھی قبضہ کرنا چاہتے ہیں انہوں نے مزید کہا کہ اس تصور 711 00:29:50,770 --> 00:29:53,230 اور ایک بالآخر تفریق کی جاتی ہے. 712 00:29:53,230 --> 00:29:58,840 >> اب ہڈ کے نیچے، دونوں اسٹیک اور ایک قطار کو کس طرح لاگو کیا جا سکتا ہے؟ 713 00:29:58,840 --> 00:30:01,390 ہم کے کوڈ میں نہیں جائیں گے اس وجہ سے اعلی سطح 714 00:30:01,390 --> 00:30:03,387 خیال طرح کی زیادہ واضح ہے. 715 00:30:03,387 --> 00:30:04,470 میرا مطلب ہے، انسانوں میں کیا کروں؟ 716 00:30:04,470 --> 00:30:07,030 میں ایپل میں پہلا شخص ہوں تو ذخیرہ کرنے اور اس کے سامنے کے دروازے ہے، 717 00:30:07,030 --> 00:30:08,130 آپ کو میں یہاں کھڑا کرنے جا رہا ہوں، جانتے ہیں. 718 00:30:08,130 --> 00:30:09,750 اور اگلے شخص کی یہاں کھڑے کرنے کے لئے جا. 719 00:30:09,750 --> 00:30:11,500 اور اگلے شخص کی یہاں کھڑے کرنے کے لئے جا. 720 00:30:11,500 --> 00:30:13,792 تو کیا ہوا آنکڑا ڈھانچہ خود کو ایک قطار میں ڈھال لیتا ہے؟ 721 00:30:13,792 --> 00:30:14,542 >> سامعین: ایک قطار. 722 00:30:14,542 --> 00:30:15,667 DAVID MALAN: ٹھیک ہے، ایک قطار. 723 00:30:15,667 --> 00:30:16,390 اس بات کا یقین. 724 00:30:16,390 --> 00:30:16,920 اور کیا؟ 725 00:30:16,920 --> 00:30:17,600 >> سامعین: ایک لنک کی فہرست. 726 00:30:17,600 --> 00:30:18,990 >> DAVID MALAN: ایک لنک آپ کو نافذ کر سکتا ہے کی فہرست. 727 00:30:18,990 --> 00:30:22,500 اور ایک لنک کی فہرست تو کیونکہ اچھا ہے مخالفت کے طور پر یہ طویل منمانے ترقی کر سکتا ہے 728 00:30:22,500 --> 00:30:24,880 کچھ مقررہ تعداد ہونے کے سٹور میں لوگوں کی. 729 00:30:24,880 --> 00:30:27,030 لیکن ہو سکتا ہے ایک مقررہ تعداد مقامات کی جائز ہے. 730 00:30:27,030 --> 00:30:30,350 وہ صرف 20 کی طرح ہے کیونکہ اگر شاید، پہلے روز آئی فونز 731 00:30:30,350 --> 00:30:33,930 وہ صرف سائز کے ایک صف کی ضرورت 20 کہ قطار، کی نمائندگی کرنے کے لئے جو 732 00:30:33,930 --> 00:30:37,070 ہم بات کر شروع میں ایک بار صرف اب کہنے کے لئے ہے ان اعلی سطح کے مسائل کے بارے میں، 733 00:30:37,070 --> 00:30:38,890 آپ اس کو لاگو کر سکتے ہیں طریقوں میں سے کسی بھی تعداد میں. 734 00:30:38,890 --> 00:30:42,030 اور شاید صرف کرنے جا رہا ہے وہاں جگہ اور وقت میں ایک تجارتی دور ہو 735 00:30:42,030 --> 00:30:43,950 یا صرف آپ کے اپنے کوڈ کی پیچیدگی میں. 736 00:30:43,950 --> 00:30:45,380 >> ایک اسٹیک کے بارے میں کیا؟ 737 00:30:45,380 --> 00:30:48,190 ویسے، ایک اسٹیک، ہم بھی دیکھا ہے صرف ان ٹرے ہو سکتا ہے. 738 00:30:48,190 --> 00:30:50,007 اور آپ کو یہ ایک صف پر عملدرآمد کر سکتے. 739 00:30:50,007 --> 00:30:53,090 لیکن کچھ نقطہ پر آپ کو، ایک سرنی استعمال کرتے ہیں تو کیا ٹرے کے لئے ہونے جا رہا ہے 740 00:30:53,090 --> 00:30:54,173 آپ نیچے ڈال کرنے کے لئے کوشش کر رہے ہیں؟ 741 00:30:54,173 --> 00:30:55,170 742 00:30:55,170 --> 00:30:55,670 ٹھیک ہے. 743 00:30:55,670 --> 00:30:57,490 تم صرف کرنے جا رہے ہیں اتنا زیادہ جانے کے قابل ہو. 744 00:30:57,490 --> 00:31:00,156 اور میں وہ ہیں Mather میں سوچتے ہیں اصل میں اس کے کھلنے میں recessed. 745 00:31:00,156 --> 00:31:01,950 تو یقینا، یہ تقریبا ہے ہے Mather استعمال کر رہا ہے کی طرح 746 00:31:01,950 --> 00:31:03,783 مقررہ سائز کے ایک صف، آپ کو صرف یہ کر سکتے ہیں کیونکہ 747 00:31:03,783 --> 00:31:08,302 میں اس کے کھلنے میں بہت سے ٹرے کو فٹ لوگوں کے گھٹنوں ذیل کے نیچے دیوار. 748 00:31:08,302 --> 00:31:10,010 اور تو ہے کہ ہو سکتا ہے ایک صف ہونے کے لئے کہا، 749 00:31:10,010 --> 00:31:14,300 لیکن ہم یقینی طور پر اس کو نافذ کر سکتے زیادہ عام طور پر ایک لنک کی فہرست کے ساتھ. 750 00:31:14,300 --> 00:31:16,390 >> ٹھیک ہے، کیا ایک اور آنکڑا ڈھانچہ کے بارے میں؟ 751 00:31:16,390 --> 00:31:18,760 مجھے یہاں بصری دوسرے ایک ھیںچو. 752 00:31:18,760 --> 00:31:24,710 کس طرح یہاں ایک کے بارے میں کی طرح کچھ؟ 753 00:31:24,710 --> 00:31:28,920 ایسا کیوں ہے کہ نہیں ہے کے لئے مفید ہو سکتا ہے ایک trie، جتنا پسند ہیں کچھ جس 754 00:31:28,920 --> 00:31:32,370 ہم، ان بہت وسیع نوڈس تھا دیکھا جن میں سے ہر ایک صف میں ہے؟ 755 00:31:32,370 --> 00:31:35,740 لیکن ہم کچھ زیادہ کیا کرنا ہے تو صرف، ایک پرانے اسکول کے خاندان کے درخت کی طرح، 756 00:31:35,740 --> 00:31:38,110 جن کے یہاں نوڈس میں سے ہر ایک صرف ایک نمبر ذخیرہ کرنے کا ہے. 757 00:31:38,110 --> 00:31:42,180 اس کی بجائے ایک نام یا اولاد کے صرف اس طرح ایک بڑی تعداد ذخیرہ کرنے کا ہے. 758 00:31:42,180 --> 00:31:45,250 >> ویسے، شبدجال ہم میں استعمال ڈیٹا ڈھانچے دونوں کی کوشش کرتا ہے 759 00:31:45,250 --> 00:31:49,510 اور درخت، ایک trie، دوبارہ، کہاں ہے صرف جن نوڈس arrays ہیں میں سے ایک، 760 00:31:49,510 --> 00:31:51,680 اب بھی ہے کیا آپ کو شاید یہ گریڈ اسکول سے استعمال 761 00:31:51,680 --> 00:31:53,860 آپ ایک خاندان نے جب درخت کے پتے اور جڑ 762 00:31:53,860 --> 00:31:57,250 درخت اور کے بچوں کی والدین اور اس کے بہن بھائیوں. 763 00:31:57,250 --> 00:32:03,670 اور ہم نے ایک درخت کو عمل درآمد کر سکتے، مثال کے طور پر، کے طور پر صرف اس کے طور پر. 764 00:32:03,670 --> 00:32:07,420 ایک درخت، اس پر اگر ایک نوڈ، ایک کے طور پر ایک بڑی تعداد ہے کہ ان حلقوں، 765 00:32:07,420 --> 00:32:09,947 اس کے ہیں کرنے والا نہیں ہے ایک پوائنٹر، لیکن دو. 766 00:32:09,947 --> 00:32:11,780 اور جیسے ہی آپ کو شامل کے طور پر ایک دوسرے پوائنٹر، آپ 767 00:32:11,780 --> 00:32:13,905 اصل میں اب سے ترتیب بنا سکتے ہیں دو جہتی ڈیٹا کے 768 00:32:13,905 --> 00:32:14,780 یاد میں ڈھانچے. 769 00:32:14,780 --> 00:32:16,660 ایک دو جہتی کی طرح زیادہ سے زیادہ سرنی، آپ کر سکتے ہیں 770 00:32:16,660 --> 00:32:18,904 دو جہتی کی طرح ہے منسلک کی فہرست بلکہ والوں 771 00:32:18,904 --> 00:32:20,820 کہ ایک پیٹرن پیروی جہاں کوئی سائیکل نہیں ہے. 772 00:32:20,820 --> 00:32:24,487 یہ ایک کے ساتھ صحیح معنوں میں ایک درخت ہے یہاں اور پھر دادا دادی راستے 773 00:32:24,487 --> 00:32:27,320 کچھ والدین اور بچوں اور پوتے اور عظیم پوتے. 774 00:32:27,320 --> 00:32:28,370 اور تو آگے. 775 00:32:28,370 --> 00:32:32,390 >> لیکن، بھی اس کے بارے میں واقعی صاف کیا ہے صرف کوڈ کا تھوڑا سا کے ساتھ آپ کو تنگ کرنے کے لئے، 776 00:32:32,390 --> 00:32:35,370 سے یاد تکرار تھوڑی دیر واپس، جس کے تحت 777 00:32:35,370 --> 00:32:38,220 آپ خود کہتے ہیں کہ ایک تقریب لکھتے. 778 00:32:38,220 --> 00:32:41,140 یہ ایک خوبصورت موقع ہے کچھ تو لاگو 779 00:32:41,140 --> 00:32:42,920 تکرار کی طرح، کیونکہ اس پر غور کریں. 780 00:32:42,920 --> 00:32:43,860 >> یہ ایک درخت ہے. 781 00:32:43,860 --> 00:32:48,040 اور میں کس طرح کے ساتھ ایک چھوٹی سی مقعد رہا ہوں میں نے گلی میں integers کے ڈال دیا. 782 00:32:48,040 --> 00:32:51,020 اتنا زیادہ کہ یہ ایک خاص ہے ایک بائنری تلاش درخت name--. 783 00:32:51,020 --> 00:32:53,460 اب ہم بائنری کے بارے میں سنا ہے آپ کو تلاش، لیکن کر سکتے ہیں 784 00:32:53,460 --> 00:32:55,180 اس چیز کا نام سے پیچھے کی طرف کام کرتے ہو؟ 785 00:32:55,180 --> 00:32:59,280 میں نے کس طرح کی طرز کیا ہے اس درخت میں integers کے ڈالا؟ 786 00:32:59,280 --> 00:33:00,696 یہ صوابدیدی نہیں ہے. 787 00:33:00,696 --> 00:33:01,570 کچھ پیٹرن نہیں ہے. 788 00:33:01,570 --> 00:33:02,090 جی ہاں. 789 00:33:02,090 --> 00:33:03,370 >> سامعین: بائیں پر چھوٹے والے. 790 00:33:03,370 --> 00:33:03,690 >> DAVID MALAN: جی ہاں. 791 00:33:03,690 --> 00:33:05,062 چھوٹے لوگوں کے بائیں طرف ہیں. 792 00:33:05,062 --> 00:33:06,270 بڑے حق پر ہیں. 793 00:33:06,270 --> 00:33:12,940 اس طرح ایک سچا بیان ہے کہ ایک والدین، اس کے بائیں بچے سے بڑھ کر ہے 794 00:33:12,940 --> 00:33:14,850 اس کے صحیح بچے کے مقابلے میں لیکن کم. 795 00:33:14,850 --> 00:33:17,750 صرف اور صرف اسی سے بھی ایک ہے پنراورتی زبانی تعریف 796 00:33:17,750 --> 00:33:20,500 آپ اس درخواست دے سکتے ہیں، کیونکہ ہر نوڈ کے لئے ایک ہی منطق 797 00:33:20,500 --> 00:33:23,080 اور یہ صرف نیچے باہر، ایک بنیاد کیس اگر 798 00:33:23,080 --> 00:33:25,740 گے، جب تم میں سے ایک مارا پتیوں، تاکہ، بات کرنے کے لئے 799 00:33:25,740 --> 00:33:28,580 چھٹی مزید کوئی بچے نہیں ہیں جہاں. 800 00:33:28,580 --> 00:33:30,614 >> اب کس طرح آپ کو 44 نمبر مل سکتا ہے؟ 801 00:33:30,614 --> 00:33:32,280 تم، HM جڑ شروع کریں اور کہیں گے. 802 00:33:32,280 --> 00:33:35,690 55 اس لئے میں جانے کے لئے چاہتے ہیں 44 نہیں ہے صحیح ہے یا مجھے چھوڑ جانا چاہتے ہو؟ 803 00:33:35,690 --> 00:33:37,190 ٹھیک ہے، ظاہر آپ کو بائیں طرف جانا چاہتا ہوں. 804 00:33:37,190 --> 00:33:40,060 اور اس طرح یہ صرف فون کی طرح ہے بائنری تلاش میں کتاب مثال 805 00:33:40,060 --> 00:33:41,099 زیادہ عام طور پر. 806 00:33:41,099 --> 00:33:43,390 لیکن ہم اس پر عمل درآمد کر رہے ہیں اب تھوڑا زیادہ متحرک 807 00:33:43,390 --> 00:33:45,339 ایک سرنی کی اجازت دے سکتا ہے کے مقابلے. 808 00:33:45,339 --> 00:33:48,130 اور حقیقت میں، آپ کو دیکھنا چاہتا ہوں تو کوڈ میں، پہلی نظر میں اس بات کا یقین. 809 00:33:48,130 --> 00:33:49,671 یہ لائنز کی ایک مکمل جھوبڈ کی طرح لگتا ہے. 810 00:33:49,671 --> 00:33:51,220 لیکن یہ خوبصورتی سے آسان ہے. 811 00:33:51,220 --> 00:33:54,490 آپ کو ایک تقریب کو لاگو کرنے کے لئے چاہتے ہیں تو جس کا مقصد زندگی میں سے ملاقات کی تلاش 812 00:33:54,490 --> 00:33:57,290 ایک قیمت کے لئے تلاش کرنے کے لئے ہے کی طرح (ن)، ایک عدد صحیح، 813 00:33:57,290 --> 00:34:01,756 اور آپ کو ایک سے ایک پوائنٹر میں منظور ہو، جڑوں کی نوڈ پوائنٹر، 814 00:34:01,756 --> 00:34:04,380 بلکہ، اس درخت کی ہے جس سے آپ، اور سب کچھ تک رسائی حاصل کر سکتے ہیں 815 00:34:04,380 --> 00:34:08,850 کس طرح سے براہ راست کو نوٹس آپ کو منطق کو لاگو کر سکتے. 816 00:34:08,850 --> 00:34:10,880 درخت خالی ہے، ظاہر ہے یہ وہاں نہیں ہے. 817 00:34:10,880 --> 00:34:11,880 چلو صرف جھوٹے واپس چلو. 818 00:34:11,880 --> 00:34:12,000 ٹھیک ہے نا؟ 819 00:34:12,000 --> 00:34:14,040 آپ اسے کچھ بھی نہیں کے حوالے تم، وہاں کچھ بھی نہیں ہے. 820 00:34:14,040 --> 00:34:17,900 >> ورنہ اگر (ن) سے بھی کم، ہے اگر اب این تیر (ن) کے درخت کے تیر، 821 00:34:17,900 --> 00:34:20,670 ہم سپر یاد مختصر طور پر دوسرے دن، 822 00:34:20,670 --> 00:34:25,100 اور یہ کہ صرف ڈی ریفرنس مطلب پوائنٹر اور کہا جاتا ن میدان میں نظر آتے ہیں. 823 00:34:25,100 --> 00:34:27,690 تو یہ وہاں جانے اور مطلب کہا جاتا ن میدان میں نظر آتے ہیں. 824 00:34:27,690 --> 00:34:33,810 تو (ن)، تو آپ کو دے رہے ہیں کی قدر، کم ہے درختوں عددی میں قیمت سے، 825 00:34:33,810 --> 00:34:35,449 جہاں آپ جانا چاہتے ہیں؟ 826 00:34:35,449 --> 00:34:36,389 بائیں کرنے کے لئے. 827 00:34:36,389 --> 00:34:37,780 >> لہذا تکرار محسوس کریں. 828 00:34:37,780 --> 00:34:39,860 میں نے نہیں سچ returning-- ہوں. 829 00:34:39,860 --> 00:34:40,989 جھوٹی نہیں. 830 00:34:40,989 --> 00:34:45,670 میں نے جو کچھ بھی جواب واپس آ رہا ہوں اپنے آپ کے لئے ایک کال کی طرف سے ہے، گزر 831 00:34:45,670 --> 00:34:50,100 بے کار ہے جو ایک بار پھر ایک (ن)،، لیکن اب تھوڑا سا مختلف کیا ہے؟ 832 00:34:50,100 --> 00:34:51,989 مجھے کس طرح چھوٹا مسئلہ بنا رہا ہوں؟ 833 00:34:51,989 --> 00:34:54,920 میں دوسری حیثیت سے گزر رہا ہوں دلیل، درخت کی جڑ نہیں، 834 00:34:54,920 --> 00:34:59,616 لیکن اس معاملے میں بائیں بچے. 835 00:34:59,616 --> 00:35:00,990 تو میں نے بائیں بچے میں گزر رہا ہوں. 836 00:35:00,990 --> 00:35:04,720 >> دریں اثنا ن سے بھی بڑا، ہے اگر میں فی الحال میں دیکھ رہا ہوں نوڈ، 837 00:35:04,720 --> 00:35:06,690 میں نے دائیں ہاتھ کی طرف پر تلاش. 838 00:35:06,690 --> 00:35:10,880 ورنہ، درخت، شہوت انگیز null نہیں ہے اگر عنصر بائیں کرنے کے لئے نہیں ہے تو 839 00:35:10,880 --> 00:35:13,240 اور یہ، درست کرنے کے لئے نہیں ہے صورت حیرت انگیز کیا ہے؟ 840 00:35:13,240 --> 00:35:14,630 841 00:35:14,630 --> 00:35:18,440 ہم اصل میں نوڈ تلاش کر لیا سوال، اور اسی طرح ہم سچ واپس. 842 00:35:18,440 --> 00:35:21,490 >> تو ہم صرف کونا اٹھا لیا ہے اب ان اعداد و شمار ڈھانچے کے کچھ. 843 00:35:21,490 --> 00:35:24,370 مسئلہ پانچ سیٹ میں تمہیں میں ابھی مزید کہا کہ ان کی جستجو، 844 00:35:24,370 --> 00:35:27,250 اور آپ کو آپ کے ڈیزائن دیا جائے گا اس کے بارے میں کس طرح جانا کے انتخاب. 845 00:35:27,250 --> 00:35:30,250 میں پر نتیجہ اخذ کرنے کے چاہتے ہیں صرف ایک 30 دوسرے جھلکی ہے 846 00:35:30,250 --> 00:35:32,080 اس سے آگے اگلے ہفتے اور انتظار کر رہا ہے کے. 847 00:35:32,080 --> 00:35:35,390 >> ہم شکر begin-- طور پرممکن ہے کہ آپ آہستہ آہستہ ہماری منتقلی think-- 848 00:35:35,390 --> 00:35:38,680 C اور نیچے کی دنیا سے سطح پر عمل درآمد کی تفصیلات، 849 00:35:38,680 --> 00:35:42,090 ایک ایسی دنیا جس میں ہم نے کے لئے لے جا سکتے ہیں کسی اور آخر میں ہے کہ عطا کی 850 00:35:42,090 --> 00:35:44,010 ان اعداد و شمار سے لاگو ہمارے لئے ڈھانچے، 851 00:35:44,010 --> 00:35:47,570 اور ہم نے سمجھنے کے لئے شروع کریں گے حقیقی دنیا کو لاگو کرنے کا مطلب ہے کہ 852 00:35:47,570 --> 00:35:50,560 ویب کی بنیاد پر پروگراموں اور ویب سائٹس زیادہ عام 853 00:35:50,560 --> 00:35:52,910 اور بھی بہت سیکورٹی ہم صرف کیا ہے کہ مضمرات 854 00:35:52,910 --> 00:35:54,850 کی سطح فیرنا کرنے کے لئے شروع. 855 00:35:54,850 --> 00:35:57,320 ہمیں یہاں انتظار کر رہا ہے دن میں آنے کی. 856 00:35:57,320 --> 00:36:00,480 >> [ویڈیو پلے بیک] 857 00:36:00,480 --> 00:36:03,432 858 00:36:03,432 --> 00:36:12,780 >> -He، ایک پیغام کے ساتھ آیا تمام نے اپنی پروٹوکول کے ساتھ. 859 00:36:12,780 --> 00:36:26,110 860 00:36:26,110 --> 00:36:30,894 انہوں نے کہا کہ ظالم کی ایک ایسی دنیا میں آئے تھے فائر والز، راوٹرز uncaring، 861 00:36:30,894 --> 00:36:33,368 اور خطرات موت سے کہیں بدتر. 862 00:36:33,368 --> 00:36:35,280 863 00:36:35,280 --> 00:36:36,236 وہ روزہ ہے. 864 00:36:36,236 --> 00:36:37,980 وہ مضبوط ہے. 865 00:36:37,980 --> 00:36:42,830 وہ TCP / IP ہے، اور انہوں نے آپ کا پتہ مل گیا ہے. 866 00:36:42,830 --> 00:36:45,290 867 00:36:45,290 --> 00:36:48,074 "نیٹ کے اول." 868 00:36:48,074 --> 00:36:49,660 [END ویڈیو پلے بیک] 869 00:36:49,660 --> 00:36:50,910 DAVID MALAN: اگلے ہفتے آ رہا ہے. 870 00:36:50,910 --> 00:36:51,880 ہم آپ کو اس کے بعد دیکھیں گے. 871 00:36:51,880 --> 00:36:54,615 872 00:36:54,615 --> 00:36:56,060 [ویڈیو پلے بیک] 873 00:36:56,060 --> 00:36:59,240 ہیں.اور اب، "گہرے خیالات" Daven Farnham طرف. 874 00:36:59,240 --> 00:37:02,030 875 00:37:02,030 --> 00:37:05,820 -David ہمیشہ شروع ہوتا ہے ، ساتھ لیکچرز "ٹھیک ہے." 876 00:37:05,820 --> 00:37:08,750 کیوں نہیں، "یہاں حل ہے اس ہفتے کا مسئلہ سیٹ "کرنے 877 00:37:08,750 --> 00:37:12,180 یا "ہم ایک آپ سب دے رہے ہیں؟" 878 00:37:12,180 --> 00:37:13,380 [LAUGHING] 879 00:37:13,380 --> 00:37:15,530 [END ویڈیو پلے بیک]