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