1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,900 [موسیقی بجانے] 3 00:00:01,900 --> 00:00:05,710 4 00:00:05,710 --> 00:00:09,150 >> ڈوگ لایڈ: اب تک آپ arrays کے بارے میں ایک بہت کچھ جانتے ہیں، 5 00:00:09,150 --> 00:00:11,610 اور آپ کو منسلک کی فہرست کے بارے میں ایک بہت کچھ جانتے ہیں. 6 00:00:11,610 --> 00:00:13,650 اور ہم کے بارے میں بات ہے پیشہ اور cons، ہم نے 7 00:00:13,650 --> 00:00:16,620 فہرستوں منسلک ہے کہ بات چیت کی بڑے اور چھوٹے حاصل کر سکتے ہیں، 8 00:00:16,620 --> 00:00:18,630 لیکن وہ زیادہ سائز تک کا وقت لگ. 9 00:00:18,630 --> 00:00:22,359 لڑیوں زیادہ براہ راست ہیں استعمال، لیکن وہ زیادہ سے زیادہ میں پابندیوں ہیں 10 00:00:22,359 --> 00:00:24,900 ہم کا سائز مقرر کرنے کے لئے ہے کے طور پر بہت شروع میں سرنی 11 00:00:24,900 --> 00:00:26,910 اور پھر ہم اس کے ساتھ پھنس گئے ہیں. 12 00:00:26,910 --> 00:00:30,470 >> لیکن ہے کہ ہم بہت زیادہ ہے، ہے ہمارے موضوعات کے تمام ختم 13 00:00:30,470 --> 00:00:33,040 منسلک کی فہرست اور arrays کے بارے میں. 14 00:00:33,040 --> 00:00:34,950 یا ہم ہیں؟ 15 00:00:34,950 --> 00:00:37,720 شاید ہم کچھ کر سکتے ہیں بھی زیادہ تخلیقی. 16 00:00:37,720 --> 00:00:40,950 اور ڈھال لیتا ہے اس طرح ایک ہیش ٹیبل کے خیال. 17 00:00:40,950 --> 00:00:46,680 >> تو ایک ہیش ٹیبل میں ہم کوشش کرنے جا رہے ہیں ایک لنک کی فہرست کے ساتھ ایک صف جمع. 18 00:00:46,680 --> 00:00:49,520 ہم فوائد لے جا رہے ہیں صف کے، رینڈم رسائی کی طرح، 19 00:00:49,520 --> 00:00:53,510 صرف صف میں جانے کے لئے کے قابل ہونے کی وجہ سے عنصر 4 یا سرنی عنصر 8 20 00:00:53,510 --> 00:00:55,560 بھر iterate کرنے کے لئے بغیر. 21 00:00:55,560 --> 00:00:57,260 یہ ٹھیک ہے، بہت تیز ہے؟ 22 00:00:57,260 --> 00:01:00,714 >> لیکن ہم یہ بھی ہمارے اعداد و شمار حاصل کرنے کے لئے چاہتے ہیں ساخت بڑھنے اور سکڑ کرنے کے قابل ہو. 23 00:01:00,714 --> 00:01:02,630 ہم ایسا نہیں کرتے، کی ضرورت نہیں ہے محدود کرنا چاہتے ہیں. 24 00:01:02,630 --> 00:01:04,588 اور ہم قابل بننا چاہتا ہوں شامل کریں اور چیزوں کو دور کرنے 25 00:01:04,588 --> 00:01:08,430 بہت آسانی سے، جس سے آپ کو یاد تو، ایک سرنی کے ساتھ بہت پیچیدہ ہے. 26 00:01:08,430 --> 00:01:11,650 اور ہم نے اس کال کر سکتے ہیں نئی چیز ایک ہیش کی میز. 27 00:01:11,650 --> 00:01:15,190 >> اور اگر، صحیح طریقے سے نافذ ہم قسم کی لے جا رہے ہیں 28 00:01:15,190 --> 00:01:18,150 دونوں کے اعداد و شمار کے فوائد آپ نے پہلے ہی دیکھا ہے ڈھانچے، 29 00:01:18,150 --> 00:01:19,880 arrays اور منسلک فہرستوں. 30 00:01:19,880 --> 00:01:23,070 اندراج کے لئے شروع کر سکتے ہیں 1 تھیٹا کی طرف ہوتے ہیں. 31 00:01:23,070 --> 00:01:26,207 تھیٹا ہم واقعی بات چیت نہیں ہے، لیکن تھیٹا صرف اوسط معاملہ ہے، 32 00:01:26,207 --> 00:01:27,540 کیا اصل میں ہونے جا رہا ہے. 33 00:01:27,540 --> 00:01:29,680 تم ہمیشہ کے لئے نہیں جا رہے ہیں بدترین صورت ہے، 34 00:01:29,680 --> 00:01:32,555 اور آپ کو ہمیشہ کے لئے نہیں جا رہے ہیں بہترین دوسری صورت، تو کیا ہے 35 00:01:32,555 --> 00:01:33,900 اوسط منظر نامے؟ 36 00:01:33,900 --> 00:01:36,500 >> ویسے اوسط اندراج ایک ہیش ٹیبل میں 37 00:01:36,500 --> 00:01:39,370 بند مسلسل وقت حاصل کرنے کے لئے شروع کر سکتے ہیں. 38 00:01:39,370 --> 00:01:41,570 اور منسوخی حاصل کر سکتے ہیں مسلسل وقت کے قریب. 39 00:01:41,570 --> 00:01:44,440 اور تلاش حاصل کر سکتے ہیں مسلسل وقت کے قریب. 40 00:01:44,440 --> 00:01:48,600 That's-- ہم ایک ڈیٹا نہیں ہے ساخت تک کہ کر سکتے ہیں، 41 00:01:48,600 --> 00:01:51,180 اور تو اس کو پہلے ہی آواز ایک بہت عظیم چیز کی طرح. 42 00:01:51,180 --> 00:01:57,010 ہم واقعی کم ہے اپنے طور پر ہر کے نقصانات. 43 00:01:57,010 --> 00:01:59,160 >> اس کی کارکردگی حاصل کرنے کے لئے ، اگرچہ ہم اپ گریڈ 44 00:01:59,160 --> 00:02:03,580 ہم شامل ہیں کہ کس طرح پر نظر ثانی کرنے کی ضرورت ہے ڈھانچے میں اعداد و شمار. 45 00:02:03,580 --> 00:02:07,380 خاص طور پر ہم چاہتے ہیں ڈیٹا خود ہمیں بتانا 46 00:02:07,380 --> 00:02:09,725 جہاں اس کی ساخت میں جانا چاہئے. 47 00:02:09,725 --> 00:02:12,850 اور پھر ہم اس میں ہے تو دیکھنے کے لئے کی ضرورت ہے تو ساخت، ہم اسے تلاش کرنے کی ضرورت ہے، 48 00:02:12,850 --> 00:02:16,610 ہم اعداد و شمار کو دیکھنے کے لئے چاہتے ہیں پھر اور مؤثر طریقے سے کرنے کے قابل ہو، 49 00:02:16,610 --> 00:02:18,910 ڈیٹا کا استعمال کرتے ہوئے، تصادفی اس تک رسائی حاصل. 50 00:02:18,910 --> 00:02:20,700 بس دیکھ کر اعداد و شمار ہم ہونا چاہئے 51 00:02:20,700 --> 00:02:25,890 بالکل ہم ہیں جہاں ایک خیال ہیش ٹیبل میں اس کو تلاش کرنے کے لئے جا. 52 00:02:25,890 --> 00:02:28,770 >> ایک ہیش اب کمی ٹیبل وہ واقعی ہیں یہ ہے کہ 53 00:02:28,770 --> 00:02:31,770 حکم یا ڈیٹا چھانٹ رہا ہے پر بہت برا. 54 00:02:31,770 --> 00:02:34,970 اور حقیقت میں، آپ شروع تو حکم یا قسم پر ان کا استعمال کرنے کے لئے 55 00:02:34,970 --> 00:02:37,990 اعداد و شمار آپ کی تمام کھو فوائد پہلے آپ 56 00:02:37,990 --> 00:02:40,710 اندراج اور منسوخی کی شرائط میں تھا. 57 00:02:40,710 --> 00:02:44,060 وقت کے قریب ہو جاتا ہے (ن) کے تھیٹا، اور ہم نے بنیادی ہے 58 00:02:44,060 --> 00:02:45,530 ایک لنک کی فہرست میں پیچھے. 59 00:02:45,530 --> 00:02:48,850 اور اس طرح ہم صرف ہیش استعمال کرنا چاہتے ہیں میزیں ہم کے بارے میں پرواہ نہیں ہے تو 60 00:02:48,850 --> 00:02:51,490 ڈیٹا کے مطابق ہے یا نہیں. 61 00:02:51,490 --> 00:02:54,290 سیاق و سباق ہے جس میں آپ CS50 میں ان کا استعمال کریں گے 62 00:02:54,290 --> 00:02:58,900 آپ کو شاید کوئی پرواہ نہیں ڈیٹا کے مطابق ہے کہ. 63 00:02:58,900 --> 00:03:03,170 >> تو ایک ہیش ٹیبل کا ایک مجموعہ ہے دو الگ الگ ٹکڑوں میں 64 00:03:03,170 --> 00:03:04,980 جس کے ساتھ ہم واقف ہیں. 65 00:03:04,980 --> 00:03:07,930 سب سے پہلے ایک تقریب، ہے جو ہم عام طور پر ایک ہیش تقریب کہتے ہیں. 66 00:03:07,930 --> 00:03:11,760 اور یہ کہ ہیش تقریب کی جا رہی ہے ، کچھ غیر منفی صحیح عدد واپس جس 67 00:03:11,760 --> 00:03:14,870 ہم عام طور پر ٹھیک ہے، ایک hashcode کہتے ہیں؟ 68 00:03:14,870 --> 00:03:20,230 دوسرا ٹکڑا ہے جس میں ایک صف ہے، قسم ہم ذخیرہ کرنے کے اعداد و شمار کرنے کے قابل 69 00:03:20,230 --> 00:03:22,190 آنکڑا ڈھانچہ میں رکھنے کے لئے چاہتے. 70 00:03:22,190 --> 00:03:24,310 ہم پر دور منعقد کریں گے اب کے لئے فہرست عنصر منسلک 71 00:03:24,310 --> 00:03:27,810 اور صرف ایک کی مبادیات کے ساتھ شروع اس کے ارد گرد اپنے سر حاصل کرنے کے لئے میز ہیش، 72 00:03:27,810 --> 00:03:30,210 اور پھر ہم شاید اڑا دونگا آپ کے دماغ تھوڑا سا جب ہم 73 00:03:30,210 --> 00:03:32,920 ایک دوسرے کے ساتھ arrays اور لنک فہرستوں یکجا. 74 00:03:32,920 --> 00:03:35,590 >> بنیادی خیال اگرچہ ہم نے کچھ اعداد و شمار لے ہے. 75 00:03:35,590 --> 00:03:37,860 ہم نے اس کے اعداد و شمار کے ذریعے چلانے کے ہیش تقریب. 76 00:03:37,860 --> 00:03:41,980 اور اس طرح کے اعداد و شمار عملدرآمد کیا جاتا ہے اور یہ ٹھیک، ایک بڑی تعداد باہر spits؟ 77 00:03:41,980 --> 00:03:44,890 اور پھر اس کی تعداد کے ساتھ ہم صرف ڈیٹا ذخیرہ 78 00:03:44,890 --> 00:03:48,930 ہم میں محفوظ کرنا چاہتے ہیں اس مقام پر سرنی. 79 00:03:48,930 --> 00:03:53,990 لہذا مثال کے طور ہم شاید ہے ڈور کے اس ہیش ٹیبل. 80 00:03:53,990 --> 00:03:57,350 یہ اتنا، اس میں 10 عناصر ہے ہم اس میں 10 ڈور فٹ کر سکتے ہیں. 81 00:03:57,350 --> 00:03:59,320 >> ہم جان ہیش کرنا چاہتے ہیں کا کہنا ہے کہ. 82 00:03:59,320 --> 00:04:02,979 جان تو ڈیٹا کے طور پر ہم داخل کرنا چاہتے ہیں کہیں اس ہیش ٹیبل میں. 83 00:04:02,979 --> 00:04:03,770 ہم اسے کہاں رکھ سکتے ہیں؟ 84 00:04:03,770 --> 00:04:05,728 ویسے عام طور پر کے ساتھ ایک صف اب تک ہم شاید 85 00:04:05,728 --> 00:04:07,610 صف 0 مقام میں ڈال دیں گے. 86 00:04:07,610 --> 00:04:09,960 لیکن اب ہم اس نئے ہیش تقریب ہے. 87 00:04:09,960 --> 00:04:13,180 >> اور ہم جان چلانے کہنا ہے کہ دو اس ہیش تقریب کے ذریعے 88 00:04:13,180 --> 00:04:15,417 اور اس کے 4 باہر spits ہے. 89 00:04:15,417 --> 00:04:17,500 ہم ہیں جہاں ٹھیک ہے کہ ہے جان ڈال کرنا چاہتے ہیں کے لئے جا رہے. 90 00:04:17,500 --> 00:04:22,050 ہم صف جگہ میں جان ڈال کرنا چاہتے ہیں 4، ہم again-- جان ہیش کیونکہ اگر 91 00:04:22,050 --> 00:04:23,810 کی بعد ہم کا کہنا ہے کہ تلاش اور کو دیکھنے کے لئے چاہتے ہیں 92 00:04:23,810 --> 00:04:26,960 یوحنا نے اس ہیش میں موجود ہے ہم کیا کرنے کی ضرورت ہے تمام table-- 93 00:04:26,960 --> 00:04:30,310 اسی ہیش کے ذریعے چلایا جاتا ہے تقریب،، نمبر 4 سے باہر حاصل 94 00:04:30,310 --> 00:04:33,929 اور یوحنا کو تلاش کرنے کے قابل ہو جائے فوری طور پر ہمارے آنکڑا ڈھانچہ میں. 95 00:04:33,929 --> 00:04:34,720 یہ بہت اچھی بات ہے. 96 00:04:34,720 --> 00:04:36,928 >> ہم اب ایسا کہنے دو ایک بار پھر، ہم نے پال ہیش کرنا چاہتے ہیں. 97 00:04:36,928 --> 00:04:39,446 ہم نے پال شامل کرنا چاہتے ہیں اس ہیش ٹیبل میں. 98 00:04:39,446 --> 00:04:42,070 اس وقت ہم چلاتے کا کہنا ہے کہ ہیش تقریب کے ذریعے پال، 99 00:04:42,070 --> 00:04:44,600 پیدا کیا جاتا ہے کہ hashcode 6. 100 00:04:44,600 --> 00:04:47,340 ٹھیک ہے اب ہم نے پال ڈال کر سکتے ہیں سرنی مقام 6. 101 00:04:47,340 --> 00:04:50,040 اور ہم چاہے تلاش کرنے کے لئے کی ضرورت ہے تو پال اس ہیش ٹیبل میں ہے، 102 00:04:50,040 --> 00:04:53,900 ہم کیا کرنے کی ضرورت ہے تمام پال چلایا جاتا ہے ہیش تقریب ذریعے ایک بار پھر 103 00:04:53,900 --> 00:04:55,830 اور ہم پھر سے باہر 6 حاصل کرنے جا رہے ہیں. 104 00:04:55,830 --> 00:04:57,590 >> اور پھر ہم صرف نظر سرنی مقام 6. 105 00:04:57,590 --> 00:04:58,910 پال ہے؟ 106 00:04:58,910 --> 00:05:00,160 اگر ایسا ہے تو، وہ ہیش ٹیبل میں ہے. 107 00:05:00,160 --> 00:05:01,875 پال نہیں ہے؟ 108 00:05:01,875 --> 00:05:03,000 انہوں نے کہا کہ ہیش ٹیبل میں نہیں ہے. 109 00:05:03,000 --> 00:05:05,720 یہ بہت سیدھا ہے. 110 00:05:05,720 --> 00:05:07,770 >> اب آپ کو ایک ہیش تقریب کی وضاحت کرتے ہیں؟ 111 00:05:07,770 --> 00:05:11,460 اچھی طرح سے واقعی کوئی حد نہیں ہے ممکن ہیش افعال کی تعداد. 112 00:05:11,460 --> 00:05:14,350 اصل میں کی ایک بڑی تعداد، وہاں واقعی ہے انٹرنیٹ پر بہت اچھا ہیں. 113 00:05:14,350 --> 00:05:17,560 کی ایک بڑی تعداد، وہاں واقعی ہے انٹرنیٹ پر بہت برے لوگ. 114 00:05:17,560 --> 00:05:21,080 یہ بھی بہت آسان ہے ایک برا ایک لکھنے کے لئے. 115 00:05:21,080 --> 00:05:23,760 >> تو کیا ایک اچھا بناتا ہے ہیش تقریب، ٹھیک ہے؟ 116 00:05:23,760 --> 00:05:27,280 ایک اچھا ہیش تقریب ہونا چاہئے صرف اعداد و شمار سے hashed جا استعمال، 117 00:05:27,280 --> 00:05:29,420 اور اعداد و شمار کے تمام سے hashed جا رہا. 118 00:05:29,420 --> 00:05:32,500 تو ہم anything-- استعمال کرنا چاہتے ہیں نہیں ہے ہم کچھ شامل نہیں ہے 119 00:05:32,500 --> 00:05:35,560 ڈیٹا کے علاوہ اور. 120 00:05:35,560 --> 00:05:37,080 اور ہم نے اعداد و شمار کے تمام استعمال کرنا چاہتے ہیں. 121 00:05:37,080 --> 00:05:39,830 ہم صرف ایک ٹکڑا استعمال کرنے کے لئے نہیں کرنا چاہتے اس کے، ہم اس کا استعمال کرنا چاہتے ہیں. 122 00:05:39,830 --> 00:05:41,710 ایک ہیش تقریب ہونا چاہئے بھی نیتاتمک ہونا. 123 00:05:41,710 --> 00:05:42,550 اس کا کیا مطلب ہے؟ 124 00:05:42,550 --> 00:05:46,200 ویسے اس کا مطلب یہ ہے کہ ہر وقت ہم اعداد و شمار کے عین مطابق ایک ہی ٹکڑے کو منتقل 125 00:05:46,200 --> 00:05:50,040 ہیش تقریب میں ہم ہمیشہ اسی hashcode باہر حاصل. 126 00:05:50,040 --> 00:05:52,870 میں میں جان پاس کرجاتے ہیں تو ہیش تقریب میں 4 باہر حاصل. 127 00:05:52,870 --> 00:05:56,110 مجھے لگتا ہے کہ ایسا کرنے کے قابل ہونا چاہئے 10،000 بار اور میں نے ہمیشہ 4 ملے گی. 128 00:05:56,110 --> 00:06:00,810 تو کوئی بے ترتیب تعداد مؤثر طریقے سے ہماری ہیش میں شامل کیا جا سکتا tables-- 129 00:06:00,810 --> 00:06:02,750 ہماری ہیش افعال میں. 130 00:06:02,750 --> 00:06:05,750 >> ایک ہیش تقریب میں بھی ہونا چاہئے یکساں ڈیٹا کی تقسیم. 131 00:06:05,750 --> 00:06:09,700 ہر وقت آپ کے ذریعے ڈیٹا چلاتے ہیں ہیش تقریب میں آپ کو، hashcode 0 حاصل 132 00:06:09,700 --> 00:06:11,200 یہ ٹھیک ہے، شاید اتنا اچھا نہیں ہے؟ 133 00:06:11,200 --> 00:06:14,600 آپ نے شاید بڑا کرنا چاہتے ہیں ہیش کوڈ کی ایک رینج. 134 00:06:14,600 --> 00:06:17,190 بھی چیزیں پھیل جا سکتا ہے ٹیبل بھر میں. 135 00:06:17,190 --> 00:06:23,210 اور یہ بھی تو بہت اچھا ہو جائے گا جان اور جوناتھن کی طرح اسی طرح کے اعداد و شمار،، 136 00:06:23,210 --> 00:06:26,320 شاید وزن کرنے کے لئے باہر پھیل گیا ہیش ٹیبل میں مختلف مقامات پر. 137 00:06:26,320 --> 00:06:28,750 یہ ایک اچھا فائدہ ہو جائے گا. 138 00:06:28,750 --> 00:06:31,250 >> یہاں ایک ہیش تقریب کی ایک مثال ہے. 139 00:06:31,250 --> 00:06:33,150 میں نے پہلے اس سے ایک کو لکھا. 140 00:06:33,150 --> 00:06:35,047 یہ ایک خاص طور پر نہیں ہے اچھی ہیش تقریب 141 00:06:35,047 --> 00:06:37,380 واقعی نہیں ہے کہ وجوہات کی بنا پر اب میں جا برداشت. 142 00:06:37,380 --> 00:06:41,040 لیکن تم یہاں کیا ہو رہا ہے دیکھتے ہیں؟ 143 00:06:41,040 --> 00:06:44,420 ہم ایک متغیر کا اعلان کر رہے ہیں ایسا لگتا ہے رقم اور 0 کے برابر یہ قائم بلایا. 144 00:06:44,420 --> 00:06:50,010 اور پھر بظاہر میں کچھ کر رہا ہوں اتنی دیر strstr [J] کے برابر نہیں ہے کے طور پر 145 00:06:50,010 --> 00:06:52,490 0 الٹا سلیش کے لئے. 146 00:06:52,490 --> 00:06:54,870 میں وہاں کیا کر رہا ہوں؟ 147 00:06:54,870 --> 00:06:57,440 >> یہ بنیادی طور پر صرف ایک اور مثال ہے [کو لاگو کرنے کے طریقہ ہے؟ پریس Strl؟] 148 00:06:57,440 --> 00:06:59,773 آپ نے جب پتہ لگانے سٹرنگ کے اختتام تک پہنچ. 149 00:06:59,773 --> 00:07:02,480 تو میں نے اصل میں نہیں ہے سٹرنگ کی لمبائی کا حساب، 150 00:07:02,480 --> 00:07:05,640 میں مارا جب میں نے صرف استعمال کر رہا ہوں الٹا سلیش 0 کردار میں جانتا ہوں 151 00:07:05,640 --> 00:07:07,185 میں سٹرنگ کے آخر تک پہنچ گئے ہیں. 152 00:07:07,185 --> 00:07:09,560 اور پھر میں رکھنے کے لئے جا رہا ہوں اس سٹرنگ کے ذریعے iterating کر، 153 00:07:09,560 --> 00:07:15,310 strstr [J] انہوں نے مزید کہا تو خلاصہ، اور دن کے اختتام رقم جدید واپس جا 154 00:07:15,310 --> 00:07:16,200 HASH_MAX. 155 00:07:16,200 --> 00:07:18,700 >> بنیادی طور پر تمام اس ہیش تقریب اضافہ کر رہا ہے کر رہا ہے 156 00:07:18,700 --> 00:07:23,450 کے ASCII اقدار کے تمام میرے سٹرنگ، اور پھر یہ ہے 157 00:07:23,450 --> 00:07:26,390 کچھ hashcode آرہے ہیں HASH_MAX طرف modded. 158 00:07:26,390 --> 00:07:29,790 شاید یہ سائز ہے میرے صف کی، ٹھیک ہے؟ 159 00:07:29,790 --> 00:07:33,160 میں ہیش ہو رہی نہیں کرنا چاہتا کوڈ میری سرنی سائز 10 میں سے ہے، 160 00:07:33,160 --> 00:07:35,712 میں ہو رہی ہو نہیں کرنا چاہتا باہر ہیش کوڈ 11، 12، 161 00:07:35,712 --> 00:07:38,690 13، مجھے میں چیزیں ڈال کر سکتے ہیں صف کے ان جگہوں، 162 00:07:38,690 --> 00:07:39,790 کہ غیر قانونی ہو گا. 163 00:07:39,790 --> 00:07:42,130 میں نے ایک انقطاع غلطی کا شکار تھا. 164 00:07:42,130 --> 00:07:45,230 >> اب یہاں ایک اور فوری ایک طرف ہے. 165 00:07:45,230 --> 00:07:48,470 عام طور پر آپ کو شاید نہیں جا رہے ہیں آپ کے اپنے ہیش افعال لکھنا چاہتا ہوں. 166 00:07:48,470 --> 00:07:50,997 یہ اصل میں کا تھوڑا سا ہے ایک آرٹ، ایک سائنس. 167 00:07:50,997 --> 00:07:52,580 اور ان میں چلا جاتا ہے کہ ایک بہت کچھ ہے. 168 00:07:52,580 --> 00:07:55,288 جیسے میں نے کہا انٹرنیٹ،، بھرا ہوا ہے بہت اچھا ہیش افعال میں سے، 169 00:07:55,288 --> 00:07:58,470 اور آپ کے لئے انٹرنیٹ کا استعمال کرنا چاہئے یہ واقعی ہے کیونکہ ہیش افعال 170 00:07:58,470 --> 00:08:03,230 صرف کی قسم کا ایک غیر ضروری وقت کی بربادی آپ کی اپنی تخلیق کرنے کے لئے. 171 00:08:03,230 --> 00:08:05,490 >> آپ سادہ ہیں لکھ سکتے ہیں جانچ کے مقاصد کے لئے. 172 00:08:05,490 --> 00:08:08,323 لیکن آپ کو اصل میں جا رہے ہیں جب ڈیٹا hashing کے اور ذخیرہ کرنے شروع 173 00:08:08,323 --> 00:08:10,780 تم ایک ہیش ٹیبل میں شاید کرنا چاہتے ہیں جا 174 00:08:10,780 --> 00:08:14,580 پیدا کیا گیا تھا کہ کچھ تقریب کو استعمال کرنے آپ کے لیے، کہ انٹرنیٹ پر موجود ہے. 175 00:08:14,580 --> 00:08:17,240 آپ کو صرف اس بات کا یقین کرتے ہیں تو اپنے ذرائع کا حوالہ دیتے ہیں. 176 00:08:17,240 --> 00:08:21,740 کوئی وجہ نہیں ہے یہاں کچھ چوری. 177 00:08:21,740 --> 00:08:25,370 >> کمپیوٹر سائنس کمیونٹی ہے یقینی طور پر اقدار سے بڑھتی ہوئی، اور واقعی 178 00:08:25,370 --> 00:08:28,796 اوپن سورس، اور یہ بہت ضروری ہے اپنے ذرائع کا حوالہ دیتے ہیں تاکہ لوگوں 179 00:08:28,796 --> 00:08:30,670 کے لئے انتساب حاصل کر سکتے ہیں وہ کر رہے ہیں کہ کام 180 00:08:30,670 --> 00:08:32,312 کمیونٹی کے فائدے کے لئے کام کر رہے. 181 00:08:32,312 --> 00:08:34,020 تو ہمیشہ sure-- ہو اور نہ صرف ہیش کے لئے 182 00:08:34,020 --> 00:08:37,270 افعال، لیکن عام طور پر جب آپ ایک باہر ذرائع سے کوڈ کا استعمال، 183 00:08:37,270 --> 00:08:38,299 ہمیشہ آپ کے منبع کا حوالہ دیتے ہیں. 184 00:08:38,299 --> 00:08:43,500 کیا جو شخص کے لئے کریڈٹ دینے کے کام میں سے کچھ تو آپ کی ضرورت نہیں ہے. 185 00:08:43,500 --> 00:08:46,720 >> ٹھیک ہے تو اس پر نظرثانی کی اجازت ایک سیکنڈ کے لئے ہیش ٹیبل. 186 00:08:46,720 --> 00:08:48,780 ہم نے چھوڑ دیا ہے جہاں یہ ہے ہم داخل بعد بند 187 00:08:48,780 --> 00:08:53,300 اس ہیش ٹیبل میں جان اور پال. 188 00:08:53,300 --> 00:08:55,180 آپ یہاں ایک مسئلہ نظر آتا ہے؟ 189 00:08:55,180 --> 00:08:58,410 آپ کے پاس دو دیکھ سکتا. 190 00:08:58,410 --> 00:09:02,240 لیکن خاص طور پر، آپ کو کیا کرنا یہ ممکن مسئلہ دیکھ رہے ہو؟ 191 00:09:02,240 --> 00:09:06,770 >> کیا میں رنگو ہیش، اور اگر بعد پروسیسنگ پتہ چلا ہے کہ 192 00:09:06,770 --> 00:09:14,000 ہیش تقریب کے ذریعے اس کے اعداد و شمار رنگو بھی hashcode 6 پیدا. 193 00:09:14,000 --> 00:09:16,810 میں نے پہلے ہی میں اعداد و شمار مل گیا ہے hashcode-- سرنی مقام 6. 194 00:09:16,810 --> 00:09:22,000 تو یہ شاید تھوڑا سا ہونے جا رہا ہے اب میرے لئے ایک مسئلہ کی، ٹھیک ہے؟ 195 00:09:22,000 --> 00:09:23,060 >> ہم نے ایک تصادم کہتے. 196 00:09:23,060 --> 00:09:26,460 اور تصادم اس وقت ہوتی ہے جب دو اعداد و شمار کے ٹکڑے ٹکڑے ایک ہی ہیش کے ذریعے چلانے کے 197 00:09:26,460 --> 00:09:29,200 تقریب ایک ہی hashcode برآمد. 198 00:09:29,200 --> 00:09:32,850 شاید ہم اب بھی دونوں حاصل کرنا چاہتے ہیں ہیش ٹیبل میں اعداد و شمار کے ٹکڑے ٹکڑے، 199 00:09:32,850 --> 00:09:36,330 دوسری صورت میں ہم رنگو چلانے نہیں کیا جائے گا منمانے ہیش تقریب کے ذریعے. 200 00:09:36,330 --> 00:09:40,870 ہم شاید حاصل کرنا چاہتے ہیں اس صف میں رنگو. 201 00:09:40,870 --> 00:09:46,070 >> ہم اگرچہ ایسا کیسے، وہ تو اور پال دونوں پیداوار hashcode 6 202 00:09:46,070 --> 00:09:49,520 ہم نے پال ادلیکھت نہیں کرنا چاہتا، ہم نے پال بھی بننا چاہتا ہوں. 203 00:09:49,520 --> 00:09:52,790 تو ہم حاصل کرنے کے لئے ایک راستہ تلاش کرنے کی ضرورت ہے ہیش ٹیبل میں عناصر 204 00:09:52,790 --> 00:09:56,550 اب بھی ہماری فوری محفوظ اندراج اور فوری نظر. 205 00:09:56,550 --> 00:10:01,350 اور اس سے نمٹنے کے لئے ایک طریقہ ہے تحقیقات لکیری بلایا کچھ کرنا. 206 00:10:01,350 --> 00:10:04,170 >> ہم ایک ہے تو یہ طریقہ استعمال کرتے ہوئے تصادم، اچھی طرح سے، ہم کیا کرتے ہیں؟ 207 00:10:04,170 --> 00:10:08,580 ویسے ہم صف جگہ میں ڈال دیا نہیں کیا جا سکتا 6، یا جو کچھ بھی hashcode پیدا کیا گیا تھا، 208 00:10:08,580 --> 00:10:10,820 کی hashcode پلس 1 میں اسے ڈال دو. 209 00:10:10,820 --> 00:10:13,670 اور یہ کہ مکمل چلو تو hashcode پلس 2 میں ڈال دیا. 210 00:10:13,670 --> 00:10:17,420 یہ وجود کا فائدہ وہ ہے تو بالکل نہیں ہم وہ ہے جہاں، 211 00:10:17,420 --> 00:10:20,850 اور ہم تلاش شروع کرنا پڑے، شاید ہم بہت دور جانے کی ضرورت نہیں ہے. 212 00:10:20,850 --> 00:10:23,900 ہو سکتا ہے کہ ہم تلاش کرنے کی ضرورت نہیں ہیش ٹیبل کے تمام این عناصر. 213 00:10:23,900 --> 00:10:25,790 شاید ہم تلاش کرنا پڑے ان میں سے ایک جوڑے. 214 00:10:25,790 --> 00:10:30,680 >> اور اس طرح ہم اب بھی کی طرف دیکھ بھال کر رہے ہیں اوسط کیس 1 کے قریب بمقابلہ کیا جا رہا ہے 215 00:10:30,680 --> 00:10:34,280 (ن) کے قریب، تو ہو سکتا ہے کہ کام کریں گے. 216 00:10:34,280 --> 00:10:38,010 تو یہ کس طرح دیکھتے ہیں حقیقت میں باہر کام کر سکتے ہیں. 217 00:10:38,010 --> 00:10:41,460 اور ہو سکتا ہے کا پتہ لگانے کر سکتے ہیں تو دیکھتے ہیں یہاں ہو سکتا ہے کہ مسئلہ. 218 00:10:41,460 --> 00:10:42,540 >> ہم بارٹ ہیش کا کہنا ہے کہ. 219 00:10:42,540 --> 00:10:45,581 تو اب ہم ایک نیا سیٹ کو چلانے کے لئے جا رہے ہیں ہیش تقریب کے ذریعے ڈور کی، 220 00:10:45,581 --> 00:10:48,460 اور ہم ہیش کے ذریعے بارٹ چلائیں تقریب، ہم hashcode 6 حاصل. 221 00:10:48,460 --> 00:10:52,100 ہم ایک نظر ڈالیں، ہم 6 دیکھیں خالی، تو ہم وہاں بارٹ ڈال کر سکتے ہیں. 222 00:10:52,100 --> 00:10:55,410 >> اب ہم لیزا اور اس ہیش بھی hashcode 6 پیدا. 223 00:10:55,410 --> 00:10:58,330 ٹھیک ہے اب ہم اس کا استعمال کر رہے ہیں کہ لکیری، ہم 6 سے شروع طریقہ تحقیقات 224 00:10:58,330 --> 00:10:59,330 ہم 6 بھرا ہوا ہے کہ دیکھیں. 225 00:10:59,330 --> 00:11:00,990 ہم نے 6 میں Lisa نہیں ڈال سکتا. 226 00:11:00,990 --> 00:11:02,090 تو ہم کہاں جاتے ہو؟ 227 00:11:02,090 --> 00:11:03,280 7 میں چلتے ہیں. 228 00:11:03,280 --> 00:11:04,610 7 کی خالی، تو کام کرتا ہے. 229 00:11:04,610 --> 00:11:06,510 تو وہاں لیزا ڈال دو. 230 00:11:06,510 --> 00:11:10,200 >> اب ہم ہومر ہیش اور ہم 7 حاصل. 231 00:11:10,200 --> 00:11:13,380 ٹھیک ہے اچھی طرح سے ہم جانتے ہیں 7 کی مکمل کہ اب، تو ہم وہاں ہومر نہیں ڈال سکتا. 232 00:11:13,380 --> 00:11:14,850 تو 8 جانے. 233 00:11:14,850 --> 00:11:15,664 8 دستیاب ہے؟ 234 00:11:15,664 --> 00:11:18,330 جی ہاں، اور 7 سے 8 کے قریبی، اگر ایسا ہے تو ہم ہیں کی تلاش شروع کرنے کے لئے ہے 235 00:11:18,330 --> 00:11:20,020 بہت دور جانے کے لئے حاصل کرنے کے لئے نہیں جا رہا. 236 00:11:20,020 --> 00:11:22,860 اور اس طرح کے 8 میں ہومر ڈال دو. 237 00:11:22,860 --> 00:11:25,151 >> اب ہم ہیش Maggie اور 3 واپس، بھگوان کا شکر ہے 238 00:11:25,151 --> 00:11:26,650 ہم صرف وہاں ہے Maggie ڈال کرنے کے قابل ہو. 239 00:11:26,650 --> 00:11:29,070 ہم کسی کو ایسا کرنے کی ضرورت نہیں ہے قسم کی ہے کہ کے لئے تحقیقات. 240 00:11:29,070 --> 00:11:32,000 اب ہم Marge کے ہیش، اور Marge کے بھی 6 واپس. 241 00:11:32,000 --> 00:11:39,560 >> ویسے 6، 8 بھرا ہوا ہے، 7 سے بھرا ہوا ہے، سے بھرا ہوا ہے 9، ٹھیک 9 خالی ہے، خدا کا شکر. 242 00:11:39,560 --> 00:11:41,600 میں 9 Marge کے ڈال کر سکتے ہیں. 243 00:11:41,600 --> 00:11:45,280 پہلے ہم شروع کر رہے ہیں دیکھ سکتے ہیں کہ ہم ہیں جہاں اب یہ مسئلہ ہے کے لئے 244 00:11:45,280 --> 00:11:48,780 قسم چیزوں بڑھاتے کرنے کے لئے شروع کے دور ان ہیش کوڈ سے. 245 00:11:48,780 --> 00:11:52,960 اور 1 کے کہ تھیٹا، اوسط مسلسل وقت کیا جا رہا ہے کی صورت، 246 00:11:52,960 --> 00:11:56,560 ایک چھوٹا سا more-- حاصل کرنے کے لئے شروع کر رہا ہے ایک چھوٹا سا زیادہ کرتے ہیں کرنے کے لئے شروع 247 00:11:56,560 --> 00:11:58,050 (ن) کے تھیٹا کی طرف. 248 00:11:58,050 --> 00:12:01,270 ہم اس سے محروم کرنے کے لئے شروع کر رہے ہیں ہیش میزیں کا فائدہ. 249 00:12:01,270 --> 00:12:03,902 >> ہم نے ابھی دیکھا ہے کہ یہ مسئلہ clustering کے کہا جاتا ہے کچھ ہے. 250 00:12:03,902 --> 00:12:06,360 اور کے بارے میں بہت برا کیا ہے clustering کے کہ آپ کو ایک بار ہے 251 00:12:06,360 --> 00:12:09,606 کی طرف سے ہیں کہ دو عناصر کی طرف سے ہے یہ اس سے بھی زیادہ ہونے کا امکان ہے کی طرف، 252 00:12:09,606 --> 00:12:11,480 آپ ڈبل ہے موقع، آپ جا رہے ہیں 253 00:12:11,480 --> 00:12:13,516 ایک تصادم حاصل کرنے کہ کلسٹر کے ساتھ، 254 00:12:13,516 --> 00:12:14,890 اور کلسٹر ایک کی طرف سے ہو جائے گا. 255 00:12:14,890 --> 00:12:19,640 اور آپ کو بڑھتی ہوئی اور بڑھتی ہوئی رکھیں گے ایک تصادم ہونے کے امکانات. 256 00:12:19,640 --> 00:12:24,470 اور آخر میں یہ صرف کے طور پر برا ہے کے طور پر تمام ڈیٹا چھانٹ رہا ہے نہیں. 257 00:12:24,470 --> 00:12:27,590 >> دوسرے مسئلہ اگرچہ ہم ہے اب بھی، اور اب تک اس نقطہ تک، 258 00:12:27,590 --> 00:12:30,336 ہم کسی طرح اسکے کیا گیا ہے ایک ہیش میز کیا سمجھنے، 259 00:12:30,336 --> 00:12:31,960 ہم ابھی تک صرف 10 ڈور کے لئے کمرے ہے. 260 00:12:31,960 --> 00:12:37,030 ہم ہیش جاری رکھنا چاہتے ہیں تو اسپرنگ فیلڈ کے شہریوں، 261 00:12:37,030 --> 00:12:38,790 ہم صرف وہاں میں ان میں سے 10 حاصل کر سکتے ہیں. 262 00:12:38,790 --> 00:12:42,619 اور ہم کوشش کریں اور ایک 11th یا 12th کے شامل تو ہم ڈال کرنے کے لئے ایک جگہ نہیں ہے. 263 00:12:42,619 --> 00:12:45,660 ہم صرف کے ارد گرد کتائی کیا جا سکتا ہے حلقوں، ایک خالی جگہ تلاش کرنے کی کوشش 264 00:12:45,660 --> 00:12:49,000 اور ہم شاید پھنس ایک لامتناہی لوپ میں. 265 00:12:49,000 --> 00:12:51,810 >> تو خیال کو ڈھال لیتا ہے اس طرح چیز کا جکڑا جانا ؟. بلایا. 266 00:12:51,810 --> 00:12:55,790 اور یہ کہ ہم میں لانے کے لئے کہاں جا رہے ہیں ہے واپس تصویر میں منسلک کی فہرست. 267 00:12:55,790 --> 00:13:01,300 اگر بجائے صرف ذخیرہ کرنے کی صف میں اعداد و شمار خود، 268 00:13:01,300 --> 00:13:04,471 صف کے ہر عنصر سکتا ایک سے زیادہ ٹکڑوں ڈیٹا کی پکڑ؟ 269 00:13:04,471 --> 00:13:05,970 ٹھیک ہے کہ حق، کوئی مطلب نہیں ہے؟ 270 00:13:05,970 --> 00:13:09,280 ہم ایک صف ہے جو صرف کر سکتے ہیں جانتے ہیں ایک صف کے ہر عنصر hold-- 271 00:13:09,280 --> 00:13:12,930 صرف ایک ٹکڑا پکڑ کر سکتے ہیں کہ اعداد و شمار کی قسم کے اعداد و شمار کے. 272 00:13:12,930 --> 00:13:16,750 >> لیکن کیا ہے کہ ڈیٹا کی قسم ایک لنک کی فہرست، ٹھیک ہے؟ 273 00:13:16,750 --> 00:13:19,830 تو کیا ہوا اگر ہر صف کے عنصر تھا 274 00:13:19,830 --> 00:13:22,790 ایک لنک کی فہرست کے سربراہ پوائنٹر؟ 275 00:13:22,790 --> 00:13:24,680 اور پھر ہم تعمیر کر سکتے ہیں ان سے منسلک کی فہرست 276 00:13:24,680 --> 00:13:27,120 اور، منمانے ان کے بڑھنے منسلک کی فہرست اجازت دیتے ہیں کیونکہ 277 00:13:27,120 --> 00:13:32,090 ہم اگاتے ہیں اور ایک سے زیادہ بہت چھوٹا کرنے ایک سرنی کرتا flexibly پر سے. 278 00:13:32,090 --> 00:13:34,210 تو کیا اب ہم استعمال کرتے ہیں تو، ہم صحیح، اس کا راستہ روک سکیں؟ 279 00:13:34,210 --> 00:13:37,760 ہم ان زنجیروں میں اضافہ کرنے کے لئے شروع ان سرنی مقامات سے باہر. 280 00:13:37,760 --> 00:13:40,740 >> اب ہم ایک لامتناہی فٹ کر سکتے ہیں ڈیٹا کی رقم، یا لامحدود نہیں، 281 00:13:40,740 --> 00:13:44,170 کی ایک صوابدیدی رقم ڈیٹا، ہماری ہیش ٹیبل میں 282 00:13:44,170 --> 00:13:47,760 کبھی میں چلانے کے بغیر تصادم کا مسئلہ. 283 00:13:47,760 --> 00:13:50,740 ہم بھی ختم ہے ایسا کرنے سے clustering کے. 284 00:13:50,740 --> 00:13:54,380 اور اچھی طرح سے ہم داخل جب جانتے ہیں کہ ایک لنک کی فہرست میں، آپ کو یاد ہے 285 00:13:54,380 --> 00:13:57,779 اکیلے، منسلک کی فہرست پر اپنے ویڈیو سے منسلک کی فہرست اور دوگنا منسلک کی فہرست، 286 00:13:57,779 --> 00:13:59,070 یہ ایک مسلسل وقت آپریشن ہے. 287 00:13:59,070 --> 00:14:00,710 ہم صرف سامنے اضافہ کر رہے ہیں. 288 00:14:00,710 --> 00:14:04,400 >> اور نظر کے لئے، اچھی طرح سے ہم جانتے ہیں کہ ایک لنک کی فہرست میں نظر آتے ہیں 289 00:14:04,400 --> 00:14:05,785 صحیح، ایک مسئلہ ہو سکتا ہے؟ 290 00:14:05,785 --> 00:14:07,910 ہم کے ذریعے تلاش کرنے کے لئے ہے شروع سے اسے ختم کرنے. 291 00:14:07,910 --> 00:14:10,460 کوئی بے ترتیب نہیں ہے ایک لنک کی فہرست میں رسائی. 292 00:14:10,460 --> 00:14:15,610 لیکن اگر اس کی بجائے ایک ہونے سے منسلک ایک نظر دوڑائیں ن O ہو جائے گا جہاں فہرست، 293 00:14:15,610 --> 00:14:19,590 اب ہم 10 سے منسلک کی فہرست ہے، یا 1،000 منسلک کی فہرست، 294 00:14:19,590 --> 00:14:24,120 اب یہ 10 سے تقسیم ن O ہے، یا ن O 1،000 کی طرف سے تقسیم. 295 00:14:24,120 --> 00:14:26,940 >> اور ہم بات کر رہے تھے جبکہ نظریاتی طور پر پیچیدگی کے بارے میں 296 00:14:26,940 --> 00:14:30,061 ہم حقیقی میں، constants کی نظرانداز ان چیزوں کو اصل بات دنیا، 297 00:14:30,061 --> 00:14:30,560 ٹھیک ہے؟ 298 00:14:30,560 --> 00:14:33,080 ہم اصل میں محسوس کریں گے ایسا ہوتا ہے کہ 299 00:14:33,080 --> 00:14:36,610 10 گنا تیزی سے چلانے کے لئے، یا 1،000 گنا تیزی، 300 00:14:36,610 --> 00:14:41,570 ہم طویل عرصے سے ایک تقسیم کر رہے ہیں کیونکہ 1،000 چھوٹے زنجیروں میں چین. 301 00:14:41,570 --> 00:14:45,090 اور اس طرح ہم نے ہر وقت تلاش کرنے کے لئے ہم کر سکتے ہیں ان زنجیروں میں سے ایک کے ذریعے 302 00:14:45,090 --> 00:14:50,290 ہم پرواہ نہیں کرتے 999 زنجیروں کو نظر انداز کے بارے میں، اور صرف اس ایک کی تلاش. 303 00:14:50,290 --> 00:14:53,220 >> جس میں اوسطا ہے 1،000 بار کم ہو. 304 00:14:53,220 --> 00:14:56,460 اور اس طرح ہم اب بھی قسم کے ہیں یہ اوسط کیس کی طرف دیکھ بھال 305 00:14:56,460 --> 00:15:01,610 کی مسلسل وقت، لیکن صرف ہم فائدہ کر رہے ہیں کیونکہ 306 00:15:01,610 --> 00:15:03,730 کچھ بڑی مسلسل پہلو کی طرف سے تقسیم. 307 00:15:03,730 --> 00:15:05,804 یہ کیسے ہو سکتا ہے چلو دیکھتے ہیں اصل میں اگرچہ نظر آتے ہیں. 308 00:15:05,804 --> 00:15:08,720 تو یہ ہم نے ہیش میز تھا ہم نے ایک ہیش میز اعلان اس سے پہلے کہ 309 00:15:08,720 --> 00:15:10,270 10 ڈور ذخیرہ کرنے کے قابل تھا. 310 00:15:10,270 --> 00:15:11,728 ہم اب ایسا کرنے کے لئے نہیں جا رہے ہیں. 311 00:15:11,728 --> 00:15:13,880 ہم پہلے ہی جانتے اس طریقہ کار کی حدود. 312 00:15:13,880 --> 00:15:20,170 اب ہمارے ہیش کی میز پر جا رہا ہے 10 نوڈس، اشارہ کی ایک صف 313 00:15:20,170 --> 00:15:22,120 منسلک کی فہرست کے سربراہوں کو. 314 00:15:22,120 --> 00:15:23,830 >> اور اب یہ شہوت انگیز null ہے. 315 00:15:23,830 --> 00:15:26,170 ان 10 اشارہ میں سے ہر ایک، شہوت انگیز null ہے. 316 00:15:26,170 --> 00:15:29,870 کچھ بھی نہیں ہمارے میں نہیں ہے اب میز ہیش. 317 00:15:29,870 --> 00:15:32,690 >> اب کچھ ڈال کرنا شروع کر دیں اس ہیش ٹیبل میں چیزوں کو. 318 00:15:32,690 --> 00:15:35,440 اور ہم اس طریقہ ہے کس طرح دیکھتے ہیں ہمیں تھوڑا سا فائدہ ہو رہا. 319 00:15:35,440 --> 00:15:36,760 اب جای ہیش کرتے ہیں. 320 00:15:36,760 --> 00:15:40,210 ہم سٹرنگ جای ذریعے چلایا جائے گا کریں گے ایک ہیش تقریب اور ہم 6 واپس. 321 00:15:40,210 --> 00:15:41,200 ویسے ہم اب میں کیا کروں؟ 322 00:15:41,200 --> 00:15:44,090 >> ٹھیک ہے اب سے منسلک کی فہرست کے ساتھ کام، ہم arrays کے ساتھ کام نہیں کر رہے. 323 00:15:44,090 --> 00:15:45,881 اور ہم کام کر رہے ہیں جب منسلک کی فہرست کے ساتھ ہم 324 00:15:45,881 --> 00:15:49,790 ہم کو متحرک طور پر شروع کرنے کے لئے کی ضرورت ہے جگہ اور عمارت زنجیروں مختص. 325 00:15:49,790 --> 00:15:54,020 اس طرح کی ان بنیادی ہیں how-- ہے ایک لنک کی فہرست کی تعمیر کے عناصر. 326 00:15:54,020 --> 00:15:57,670 تو متحرک چلو جای کے لئے جگہ مختص، 327 00:15:57,670 --> 00:16:00,390 اور اس کے بعد کی چین کے لئے اس میں شامل ہیں. 328 00:16:00,390 --> 00:16:03,170 >> تو اب ہم نے کیا کیا نظر آتے ہیں. 329 00:16:03,170 --> 00:16:06,440 ہم جای ہیش جب ہم hashcode 6 ہے. 330 00:16:06,440 --> 00:16:11,790 سرنی مقام 6 اب پوائنٹر ایک لنک کی فہرست کے سربراہ کی طرف اشارہ ہے، 331 00:16:11,790 --> 00:16:14,900 اور اب یہ صرف ہے ایک لنک کی فہرست کے عنصر. 332 00:16:14,900 --> 00:16:18,350 اور اس میں نوڈ لنک کی فہرست جای ہے. 333 00:16:18,350 --> 00:16:22,300 >> ہم جای تلاش کرنے کے لئے کی ضرورت ہے تو بعد میں، ہم صرف ایک بار پھر جای ہیش، 334 00:16:22,300 --> 00:16:26,300 ہم اپنے کی وجہ سے ایک بار پھر 6 حاصل ہیش تقریب نیتاتمک ہے. 335 00:16:26,300 --> 00:16:30,400 اور پھر ہم سر میں شروع لنک کی فہرست کے اشارہ 336 00:16:30,400 --> 00:16:33,360 سرنی محل وقوع کی طرف سے 6، اور ہم iterate کرسکتے ہیں 337 00:16:33,360 --> 00:16:35,650 جای تلاش کرنے کی کوشش ہے کہ اس پار. 338 00:16:35,650 --> 00:16:37,780 اور ہم تعمیر تو ہمارے مؤثر طریقے سے میز ہیش، 339 00:16:37,780 --> 00:16:41,790 اور ہماری ہیش تقریب مؤثر طریقے سے اچھی طرح سے ڈیٹا کی تقسیم کے لئے، 340 00:16:41,790 --> 00:16:45,770 اوسطا ان میں سے ہر ایک سے منسلک ہر صف مقام پر فہرستوں 341 00:16:45,770 --> 00:16:50,110 اگر سائز 1/10 ہو جائے گا ہم صرف ایک بڑی کے طور پر یہ تھا 342 00:16:50,110 --> 00:16:51,650 اس میں سب کچھ کے ساتھ منسلک فہرست. 343 00:16:51,650 --> 00:16:55,670 >> ہم نے بڑا منسلک ہے کہ تقسیم کریں تو 10 سے منسلک کی فہرست میں فہرست 344 00:16:55,670 --> 00:16:57,760 ہر ایک کی فہرست 1/10 سائز ہو جائے گا. 345 00:16:57,760 --> 00:17:01,432 اور اسی طرح 10 گنا تیز کے ذریعے تلاش کرنے. 346 00:17:01,432 --> 00:17:02,390 تو پھر ایسا کرنے دو. 347 00:17:02,390 --> 00:17:04,290 اب راس ہیش کرتے ہیں. 348 00:17:04,290 --> 00:17:07,540 >> اور ہم ایسا جب راس، کا کہنا ہے کہ ہم واپس حاصل ہیش کوڈ 2. 349 00:17:07,540 --> 00:17:10,630 ٹھیک ہے اب ہم کو متحرک طور پر ایک مختص نیا نوڈ، ہم، اس نوڈ میں Ross ڈال 350 00:17:10,630 --> 00:17:14,900 اور ہم صف مقام کہتے ہیں 2، شہوت انگیز null کی طرف اشارہ کی بجائے، 351 00:17:14,900 --> 00:17:18,579 ایک لنک کے سربراہ کی طرف اشارہ ہے جن کی صرف نوڈ فہرست راس ہے. 352 00:17:18,579 --> 00:17:22,660 اور اگر ہم اس سے زیادہ وقت کر سکتے ہیں راہیل ہیش اور hashcode 4 حاصل کر سکتے ہیں. 353 00:17:22,660 --> 00:17:25,490 راخل ڈال، ایک نیا نوڈ malloc نوڈ، اور ایک سرنی مقام کہتے ہیں 354 00:17:25,490 --> 00:17:27,839 4 اب سر کی طرف اشارہ ہے جس کا ایک لنک کی فہرست کے 355 00:17:27,839 --> 00:17:31,420 صرف عنصر راہیل ہو. 356 00:17:31,420 --> 00:17:33,470 >> ٹھیک ہے لیکن کیا تو کیا ہوتا ہم نے ایک تصادم ہے؟ 357 00:17:33,470 --> 00:17:38,560 ہم collisions سے کس طرح نمٹنے دیکھتے ہیں علیحدہ جکڑا جانا؟ طریقہ استعمال کرتے ہوئے. 358 00:17:38,560 --> 00:17:39,800 کی ناو ہیش کرتے ہیں. 359 00:17:39,800 --> 00:17:41,094 ہم hashcode 6 حاصل. 360 00:17:41,094 --> 00:17:44,010 ہمارے گزشتہ مثال میں ہم صرف کر رہے تھے صف میں ڈور ذخیرہ. 361 00:17:44,010 --> 00:17:45,980 یہ ایک مسئلہ تھا. 362 00:17:45,980 --> 00:17:48,444 >> ہم clobber نہیں نہیں کرنا چاہتے جوی، اور ہم نے پہلے ہے 363 00:17:48,444 --> 00:17:51,110 ہم نے کچھ clustering کے حاصل کر سکتے ہیں کہ دیکھا مسائل ہم کوشش کریں تو اور قدم 364 00:17:51,110 --> 00:17:52,202 کے ذریعے اور تحقیقات. 365 00:17:52,202 --> 00:17:54,660 لیکن کیا اگر ہم صرف کی قسم یہ صحیح، اسی طرح کا علاج؟ 366 00:17:54,660 --> 00:17:57,440 یہ صرف ایک عنصر شامل کرنے کی طرح ہے ایک لنک کی فہرست کے سربراہ. 367 00:17:57,440 --> 00:18:00,220 ناو کے لئے صرف malloc کے خلائی دو. 368 00:18:00,220 --> 00:18:04,764 >> ہم ناو کے اگلے پوائنٹر پوائنٹس کہیں گے لنک کی فہرست کے پرانے سر پر، 369 00:18:04,764 --> 00:18:07,180 اور پھر 6 صرف کی طرف اشارہ ہے لنک کی فہرست کے نئے سربراہ. 370 00:18:07,180 --> 00:18:10,150 اور اب ہم میں ناو تبدیل کر دیا ہے، دیکھو. 371 00:18:10,150 --> 00:18:14,210 اب ہم دونوں محفوظ کر سکتے ہیں hashcode 6 کے ساتھ عناصر، 372 00:18:14,210 --> 00:18:17,170 اور ہم کسی بھی مسئلہ نہیں ہے. 373 00:18:17,170 --> 00:18:20,147 >> کہ بہت زیادہ سب جکڑا جانا کرنے کے لئے ہے. 374 00:18:20,147 --> 00:18:21,980 اور جکڑا جانا ضرور ہے ہے کہ طریقہ 375 00:18:21,980 --> 00:18:27,390 اگر آپ کے لئے سب سے زیادہ مؤثر ہونے جا رہا آپ کو ایک ہیش ٹیبل میں ڈیٹا ذخیرہ کرنے کر رہے ہیں. 376 00:18:27,390 --> 00:18:30,890 لیکن اس مجموعہ arrays اور منسلک فہرستوں 377 00:18:30,890 --> 00:18:36,080 ایک دوسرے کے ساتھ واقعی ایک ہیش ٹیبل بنانے کے لئے ڈرامائی طور پر آپ کی صلاحیت میں بہتری 378 00:18:36,080 --> 00:18:40,550 اعداد و شمار کی بڑی مقدار میں محفوظ، اور بہت تیزی سے اور مؤثر طریقے سے تلاش 379 00:18:40,550 --> 00:18:41,630 کہ اعداد و شمار کے ذریعے. 380 00:18:41,630 --> 00:18:44,150 >> ایک وہاں اب بھی ہے وہاں سے باہر آنکڑا ڈھانچہ 381 00:18:44,150 --> 00:18:48,700 یہاں تک کہ ایک تھوڑا سا ہو سکتا ہے ضمانت کے لحاظ سے بہتر 382 00:18:48,700 --> 00:18:51,920 کہ ہمارے اندراج، منسوخی، اور اوپر دیکھو بار بھی تیز ہیں. 383 00:18:51,920 --> 00:18:55,630 اور ہم کوشش کرتا ہے پر ایک ویڈیو میں دیکھیں گے کہ. 384 00:18:55,630 --> 00:18:58,930 میں ڈوگ لایڈ ہوں، اس CS50 ہے. 385 00:18:58,930 --> 00:19:00,214