1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [অনুচ্ছেদ 3 - আরো আরামদায়ক] 2 00:00:02,570 --> 00:00:05,070 [Rob Bowden - হার্ভার্ড বিশ্ববিদ্যালয়] 3 00:00:05,070 --> 00:00:07,310 >> [এটি CS50. - CS50.TV] 4 00:00:07,310 --> 00:00:12,700 >> তাই অদ্ভুত প্রথম প্রশ্ন worded হয়. 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 তাই মনে রাখা কি বড় হে মানে কি বড় ওমেগা উপায়. 40 00:02:41,800 --> 00:02:50,560 বড় হে ঊর্ধ্ব ধীর আসলে কিভাবে এটিকে চালাতে পারে আবদ্ধ ভালো হয়. 41 00:02:50,560 --> 00:02:58,990 সুতরাং এর আউটপুট হবে বর্গ দিয়ে বলে, এটা বা অন্য এটি চালানোর জন্য সক্ষম হবে n হে না 42 00:02:58,990 --> 00:03:02,640 রৈখিক সময়, কিন্তু এটা n ঘনাংকিত হে 43 00:03:02,640 --> 00:03:06,390 কারণ এটি হবে ঘনাংকিত হে দ্বারা বেষ্টিত. 44 00:03:06,390 --> 00:03:12,300 যদি n বর্গ হে দ্বারা বেষ্টিত এর পরে, এটি হবে ঘনাংকিত দ্বারা বেষ্টিত এর জন্যও. 45 00:03:12,300 --> 00:03:20,280 সুতরাং স্কয়ার্ড n, এবং হয় চরম খারাপ ক্ষেত্রে এটা হবে স্কয়ার্ড চেয়ে আরও ভাল করতে পারে না, 46 00:03:20,280 --> 00:03:22,830 যা কেন তা N বর্গ হে. 47 00:03:22,830 --> 00:03:31,200 সুতরাং কিভাবে আসে আউট n ছক হতে যাও অসম্মান দেখতে গণিত, 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 [ছাত্রদের] হবে - 1. >> হ্যাঁ. 52 00:03:53,540 --> 00:03:58,340 >> 1 - যদি 5 উপাদান আছে, আমরা যাও যাও n তৈরি করতে যাচ্ছেন. 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 মাপের swap তৈরি করতে যাচ্ছেন. 57 00:04:15,270 --> 00:04:19,899 আমি অনুমান গত এক বা ঘটতে পারে আসলে দরকার নেই. 58 00:04:19,899 --> 00:04:22,820 এটা একটি swap? আমি জানি না. 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 সুতরাং শুধু এই অঙ্ক সাজানোর, আমরা কতগুলি তুলনা করতে আমরা দেখতে চাই 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 তারপর আমরা এখনও ঠিক করছি কিন্তু অনেক তুলনা সেখানে summing. 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 >> তাই এখন আমরা n এর summing 3 করছেন. এটা 3 হবে এর না. 71 00:05:22,400 --> 00:05:27,650 এটা সবসময় এর যাও n / 2 n এর হবে. 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 এবং n + n + n + n + n সঙ্গে শেষ. 75 00:05:37,180 --> 00:05:45,840 তাই আপনি সর্বদা যাও n / 2 n এর করছি পেতে যাচ্ছে, তাই এই আমরা এটি স্কয়ার্ড n / 2 যাও একফোঁটা আউট করব. 76 00:05:45,840 --> 00:05:48,890 তাই যদিও এটা অর্ধেক উপাদান, যা আসতে ঘটবে 77 00:05:48,890 --> 00:05:54,190 কারণ সত্য যে আমরা অ্যারের উপর প্রতিটি পুনরাবৃত্তির মাধ্যমে তুলনা 1 কম 78 00:05:54,190 --> 00:05:58,040 তাই যে কিভাবে আমরা 2 তরা, কিন্তু এটি এখনও n ছক. 79 00:05:58,040 --> 00:06:01,650 আমরা একটি অর্দ্ধ্বেক ধ্রুবক ফ্যাক্টর না যত্ন সম্পর্কে না. 80 00:06:01,650 --> 00:06:07,760 সুতরাং হে বড় উপাদান একটি ভালো অনেক গণিত এই সাজানোর করছেন মাত্র ধরনের উপর নির্ভর করে, 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 কেন n র ওমেগা হয় সন্নিবেশ সাজান? ওমেগা মানে কি? 85 00:06:24,430 --> 00:06:27,730 [দুই ছাত্র একযোগে ভাষী - অপাচ্য] >> হ্যাঁ. 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 নির্বিশেষে যে তালিকা এর মধ্যে পাস, এটি সবসময় অন্তত n জিনিষ তুলনা করা হয়েছে 89 00:06:41,810 --> 00:06:44,620 অথবা এটা হবে জিনিষ উপর পুনরুক্তি করা আছে. 90 00:06:44,620 --> 00:06:47,280 কেন হল? 91 00:06:47,280 --> 00:06:51,190 [ছাত্রদের] কারণ যদি ইতিমধ্যে তালিকা অনুসারে বাছাই করা হয়, তাহলে মাধ্যমে প্রথম পুনরাবৃত্তির 92 00:06:51,190 --> 00:06:54,080 আপনি শুধুমাত্র গ্যারান্টি পারেন যে খুব প্রথম উপাদান হয় অন্তত, 93 00:06:54,080 --> 00:06:56,490 এবং দ্বিতীয় পুনরাবৃত্তির শুধুমাত্র আপনি গ্যারান্টি পারেন প্রথম দুটি 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 তাই নিম্ন সন্নিবেশ সাজানোর উপর বাউন্ড n র ওমেগা. 101 00:07:25,290 --> 00:07:28,210 কি লক চলমান একত্রীকরণ ধরণের সময়, 102 00:07:28,210 --> 00:07:31,390 লক হচ্ছে আবার বড় হে? 103 00:07:31,390 --> 00:07:37,660 সুতরাং এ লক দৃশ্যকল্প মধ্যে কিভাবে, একত্রীকরণ সাজানোর চালানোর জন্য? 104 00:07:42,170 --> 00:07:43,690 [ছাত্রদের] N লগ n. >> হ্যাঁ. 105 00:07:43,690 --> 00:07:49,990 দ্রুততম সাধারণ বাছাই আলগোরিদিম হল n log n. আপনি ভাল করতে পারবেন না. 106 00:07:51,930 --> 00:07:55,130 >> বিশেষ মামলা আছে, এবং আমরা যদি সময় থাকে আজ - কিন্তু সম্ভবত আমরা won't - 107 00:07:55,130 --> 00:07:59,330 আমরা এক যে আছে n log n বেশী ভালো দেখতে পারে. 108 00:07:59,330 --> 00:08:04,050 কিন্তু সাধারণ ক্ষেত্রে, আপনি n log n চেয়ে আরও ভাল করতে পারে না. 109 00:08:04,050 --> 00:08:09,680 এবং সাজানোর একত্রীকরণ যাও আপনি এই কোর্স যা n log n জন্য জানা উচিত হবে এরকম. 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 আপনি শুধুমাত্র অ্যারের উপর পুনরুক্তি করা, যাই হোক না কেন বৃহত্তম মান বা ক্ষুদ্রতম খুঁজে - 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 আপনি অ্যারের উপর, যাই হোক না কেন বারবার সর্বনিম্ন উপাদান হল খুঁজছেন, 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 কারণ আর পিছন দিকে - কিন্তু আপনি যদি আমার নামের উপর ক্লিক করুন এবং আপনি 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 তাই আপনি যদি আমরা পেতে যে পরিত্রাণ # define - 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] যে সি মধ্যে বিদ্যমান নয় 173 00:12:36,600 --> 00:12:38,580 . প্রয়োজন দ্বারা. 174 00:12:38,580 --> 00:12:42,010 অ্যারেগুলির বৈশিষ্ট্য নেই, তাই কোনও অ্যারে দৈর্ঘ্যের সম্পত্তি আছে 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 এবং যে যদিও অনেক পূর্ণসংখ্যা হতে যাচ্ছে বার আছে একটি পূর্ণসংখ্যা আকার 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 recursive সমাধান, যা অবশ্যই একটি বৈধ সমাধান সঙ্গে গিয়েছিলাম. 243 00:17:43,160 --> 00:17:44,970 দুটি উপায়ে এই সমস্যা আপনি করতে পারেন. 244 00:17:44,970 --> 00:17:48,060 হয় আপনি এটি iteratively বা recursively করতে পারেন. 245 00:17:48,060 --> 00:17:53,860 অধিকাংশ সমস্যার আপনি যে recursively করা সম্ভব সম্মুখীন iteratively এছাড়াও এটি করা যাবে. 246 00:17:53,860 --> 00:17:58,510 সুতরাং এখানে আমরা তা সম্পন্ন recursively করেছি. 247 00:17:58,510 --> 00:18:03,730 >> কিন্তু কেউ কি এটা একটি ফাংশন recursive করা মানে সংজ্ঞায়িত করতে চান? 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 একটি recursive ফাংশন শুধুমাত্র একটি ফাংশন যা নিজেই কল. 251 00:18:17,680 --> 00:18:24,140 তিনটি বড় যে একটি recursive ফাংশন আছে অবশ্যই আছে. 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 কিন্তু পরিশেষে, শেষ যে এর recursive ফাংশন জন্য গুরুত্বপূর্ণ: 259 00:18:52,130 --> 00:18:59,250 ফাংশান একরকম বেস ক্ষেত্রে যোগাযোগ করা আবশ্যক. 260 00:18:59,250 --> 00:19:04,140 যদি আপনি কিছু আপডেট আসলে করছি না হলে আপনি দ্বিতীয় recursive কল করতে চাই, 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 এটি একটি অসীম recursion ও একটি স্ট্যাক ওভারফ্লো হবে. 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 তাই সব recursive কল মধ্যে আমরা কিছু আপডেট করা হয়. ঠিক আছে. 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 এবং যদি তা হয়, তাহলে আমরা তা খুঁজে পাওয়া যায়, এবং আমি অনুমান যে recursion মাত্রা পাস আপ হয়. 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 Recursive ফাংশন, আপনি সর্বদা শুনতে যে তারা একটি খারাপ চুক্তি 283 00:20:46,080 --> 00:20:51,160 কারণ যদি আপনি recursively কল নিজেকে অনেকবার, আপনি স্ট্যাক ওভারফ্লো পেতে 284 00:20:51,160 --> 00:20:54,990 যেহেতু, হিসাবে আমি আগে বলেন, প্রতি ফাংশন নিজস্ব স্ট্যাকের ফ্রেম পায়. 285 00:20:54,990 --> 00:20:59,500 সুতরাং recursive ফাংশন কল প্রতিটি নিজস্ব স্ট্যাকের ফ্রেম পায়. 286 00:20:59,500 --> 00:21:04,140 তাই আপনি যদি 1,000 recursive কল করতে, আপনাকে 1,000 স্ট্যাকের ফ্রেম পাবেন, 287 00:21:04,140 --> 00:21:08,390 এবং দ্রুত হচ্ছে আপনি অনেকগুলি স্ট্যাকের ফ্রেম এবং জিনিষ ঠিক বিরতি হতে. 288 00:21:08,390 --> 00:21:13,480 সুতরাং যে কেন recursive ফাংশন সাধারণত খারাপ. 289 00:21:13,480 --> 00:21:19,370 কিন্তু লেঙ্গুড়-recursive ফাংশন একটি recursive ফাংশন চমৎকার উপসেট সেখানে বলা হয়, 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 তাহলে এই লেঙ্গুড় recursive এবং বিজ্ঞপ্তি জিনিষ ভালো করতে হবে. 293 00:21:33,250 --> 00:21:40,050 >> সেই একই এবং উপর আবার প্রতিটি recursive কলের জন্য স্ট্যাকের ফ্রেম পুনরায় ব্যবহার করতে হবে. 294 00:21:40,050 --> 00:21:47,010 তাই যেহেতু আপনি একই স্ট্যাকের ফ্রেম ব্যবহার করছেন, আপনি চিন্তা করতে হবে না 295 00:21:47,010 --> 00:21:51,690 কখনও উদ্বেল, গাদা করা এবং একই সময়ে, যেমন আপনি আগে বলেন, 296 00:21:51,690 --> 00:21:56,380 যেখানে একবার ফিরে আপনি সত্য হয় তাহলে, এটি এই স্ট্যাকের ফ্রেম সব ফিরে আপ হয়েছে 297 00:21:56,380 --> 00:22:01,740 এবং SearchHelp 9 ম ফিরে যাও আছে 10 কল, 8 ম ফিরে যাও আছে. 298 00:22:01,740 --> 00:22:05,360 তাই যখন কার্যকারিতাই লেঙ্গুড় recursive ঘটতে করার দরকার নেই. 299 00:22:05,360 --> 00:22:13,740 তাই কি করে এই ফাংশন লেঙ্গুড় recursive হয় যে বিজ্ঞপ্তি জন্য কোনো searchHelp দেওয়া কল 300 00:22:13,740 --> 00:22:18,470 recursive কল যে এটি তৈরীর এর কি এটা ফেরত না. 301 00:22:18,470 --> 00:22:25,290 সুতরাং SearchHelp প্রথমে কলে, হয় আমরা অবিলম্বে মিথ্যা ফিরে, 302 00:22:25,290 --> 00:22:29,590 অবিলম্বে সত্য ফিরে, বা আমরা SearchHelp একটি recursive কল 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 >> সুতরাং এখন এই recursive কল, এই int x = SearchHelp recursive কল, 307 00:23:01,470 --> 00:23:05,740 আর লেঙ্গুড় recursive কারণ এটি আসলে ফিরে আছে 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 তাই এই হল, কিন্তু লেঙ্গুড় recursive না কি আমরা আগে ছিল সুন্দরভাবে হয় লেঙ্গুড় recursive. হাঁ. 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 + শেষ শুরু - হ্যাঁ, আমি মনে করি অসীম recursion যেতে পারেন. 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 তাই এই ক্ষেত্রে যেখানে প্রতি recursive কল আসলে কিছু আপডেট করতে হবে. 370 00:28:43,310 --> 00:28:48,370 তাই আমরা শুরু + শেষ / 2 + 1 টি, বা অন্য কোন প্রয়োজন একটি কেস আছে 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 সব কি আমরা এটি recursively করবেন? 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 উল্লেখ্য, যে যদিও এই সমস্যা নেই recursive, 431 00:34:11,530 --> 00:34:17,400 ধারণা একই ধরনের আবেদন যেখানে আমরা কিভাবে এই সহজেই নিজেই ধার দেখতে পারেন 432 00:34:17,400 --> 00:34:23,659 একটি সত্য যে আমরা বেশী বেশী করছি সূচক আবার আপডেট দ্বারা recursive সমাধান, 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 এবং আমরা সাজানোর n log n হে কোন এলগরিদম ব্যবহার করে বাস্তবায়ন করতে চান. 463 00:37:12,840 --> 00:37:17,240 সুতরাং যা আলগোরিদিম আপনি মনে করেন আমরা এখানে বাস্তবায়ন করা উচিত? >> [ছাত্রদের] মার্জ সাজান. 464 00:37:17,240 --> 00:37:23,810 [Bowden] হ্যাঁ. সাজানোর মার্জ হয় হে (n log n), যাতে আমরা কি করতে যাচ্ছেন. 465 00:37:23,810 --> 00:37:26,680 এবং সমস্যার সুন্দর অনুরূপ হবে, 466 00:37:26,680 --> 00:37:31,920 যেখানে সহজে এটি একটি recursive সমাধান নিজেকে ধার দেয়. 467 00:37:31,920 --> 00:37:35,580 আমরা একটি সমাধান পুনরাবৃত্ত চিন্তা যদি আমরা করতে চান করতে পারেন, 468 00:37:35,580 --> 00:37:42,540 কিন্তু recursion সহজ এবং এখানে আমরা recursion করা উচিত হবে. 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 সুতরাং সাজান আছে একত্রীকরণ - আমি এই কাগজের এত am নাশক. 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 মার্জ দুটি পৃথক অ্যারে লাগে. 477 00:38:33,460 --> 00:38:36,780 পৃথকরূপে যারা দুই অ্যারে উভয় সাজানো হয়. 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 >> তাই আমরা যে এই দুটি অ্যারে সাজানো হয় সুবিধা গ্রহণ করতে পারেন 483 00:39:03,390 --> 00:39:06,800 লিনিয়ার সময় করি, 484 00:39:06,800 --> 00:39:13,510 রৈখিক সময় অর্থ যদি এই অ্যারে আকার হল x এবং এই আকার y, 485 00:39:13,510 --> 00:39:20,970 তারপর মোট আলগোরিদিম হে (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 এই অ্যারে উভয় যদি আমরা শুধুমাত্র leftmost উপাদান ফোকাস. 491 00:39:41,070 --> 00:39:43,530 কারণ উভয় অ্যারে অনুসারে বাছাই করা হয়, আমরা জানি যে, এই উপাদান 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 একটি দম্পতি জিনিস সম্পর্কে চিন্তা করা হয় let এর বলতে আমরা 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 সুতরাং আমরা যদি কখনও বিন্দু যেখানে সম্পূর্ণরূপে আমাদের অ্যারে এক মার্জ করা হয় ইতিমধ্যে মধ্যে চালানো, 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 যাও recursively আংশিক অ্যারের মধ্যে বিরতি হয়. 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 একবার অ্যারে আকার 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 এবং পরিশেষে, আমরা মাপ 8 এক তালিকা অনুসারে সাজানো হয় যে পেতে যারা আকার 4 দুটি তালিকা মার্জ করতে পারবেন. 547 00:45:25,710 --> 00:45:34,030 যাতে এই সামগ্রিক n log n দেখতে, ইতিমধ্যেই আমরা দেখেছি যে একত্রীকরণ রৈখিক হয়, 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 বা ভাল, এটা n হে, কিন্তু n এখানে শুধুমাত্র এই উপাদান 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 তাই এই সংকলনের মধ্যে সমন্নয় খরচ n হল. 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 আমরা শেষ পর্যন্ত মার্জ n মোট জিনিষ, এবং তাই এই পদক্ষেপ হবে লাগে. 559 00:46:29,030 --> 00:46:33,670 এবং তাই প্রতিটি স্তরের n হচ্ছে মার্জ উপাদান লাগে. 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 এখানে আমাদের অ্যারে আকার 1 হয় এখানে, তারা আকার 2 হয়ে এখানে, তারা আকার 4 হন, 563 00:46:44,590 --> 00:46:46,470 এবং পরিশেষে, তারা 8 আকার হয়ে. 564 00:46:46,470 --> 00:46:56,450 সুতরাং যেহেতু এটি দ্বিত্ব হয়, going to লগ অফ n এই মাত্রা একটি মোট করা আছে. 565 00:46:56,450 --> 00:47:02,090 তাই সঙ্গে লগ n মাত্রা, প্রতিটি স্তর গ্রহণ n মোট অপারেশন, 566 00:47:02,090 --> 00:47:05,720 আমরা একটি n log n আলগোরিদিম পেতে. 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 আমি অত্যন্ত আবৃত্তি করা সুপারিশ - 573 00:47:28,730 --> 00:47:30,510 আপনি একত্রীকরণ জন্য recursion না আছে 574 00:47:30,510 --> 00:47:33,750 কারণ একত্রীকরণ জন্য recursion না, আপনি বিভিন্ন আকারের একটি গুচ্ছ পাস আছে চলুন. 575 00:47:33,750 --> 00:47:37,150 আপনি কিন্তু, এটা বিরক্তিকর হতে পারে. 576 00:47:37,150 --> 00:47:43,720 কিন্তু নিজেকে সাজানোর জন্য recursion বেশ সহজ. 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 [ছাত্রদের] আমি সব ফাংশন এগুলির নমুনা এবং সবকিছু করার প্রয়োজন আছে যদিও,,, ঠিক? 616 00:50:37,640 --> 00:50:40,840 ফাংশন এগুলির নমুনা. হ্যাঁ - ওহ, আপনি ভালো বলতে চাইছেন. 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 recursive হয়, যাতে কোনো recursive ফাংশন 626 00:51:38,110 --> 00:51:42,610 মৌলিক ক্ষেত্রে কিছু সাজানোর যখন recursively নিজেই কলিং বন্ধ করার জন্য জানা প্রয়োজন হবে. 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 যেমন আমরা দেখেছি অধিকার আছে, আমরা বধির অ্যারে থামানো 630 00:51:56,220 --> 00:52:01,850 একবার আমরা অ্যারে আকার 1, যা অবশ্যম্ভাবীরূপে নিজেদের মধ্যে সাজানো হয় না. 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 প্রতিটি ক্ষেত্রে এবং এছাড়াও, আমি যেটা প্লেসহোল্ডার আমি বাড়ায় বৃদ্ধিশীল করছি. 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 সাজানোর মার্জ একটি ফাংশন যা উভয় recursive লেঙ্গুড় না একটি উদাহরণ, 684 00:56:03,070 --> 00:56:07,040 এটা লেঙ্গুড় recursive করা সহজ নয়, 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 >> তাই মার্জ সাজানোর একত্রীকরণ উপরে নির্মিত recursively শুধুমাত্র এই তিনটি লাইন. 690 00:56:29,170 --> 00:56:34,700 Iteratively, এটা আরো বিরক্তিকর এবং আরো কঠিন সম্পর্কে চিন্তা করা. 691 00:56:34,700 --> 00:56:41,860 কিন্তু যে এটি লেঙ্গুড় mergeSortHelp থেকে recursive না বিজ্ঞপ্তি - যখন এটি নিজেই কল - 692 00:56:41,860 --> 00:56:46,590 এটি এখনও এই recursive কল আয় পরে কিছু করার প্রয়োজন. 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 এবং এটা এই লেঙ্গুড় recursive করা 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 মধ্যে n হে. 705 00:57:33,660 --> 00:57:40,860 তাই কিভাবে এটি সম্ভব? কেউ কি কোনো সাজান আছে - 706 00:57:40,860 --> 00:57:44,300 আমি আগে hinted - 707 00:57:44,300 --> 00:57:48,300 যদি আমরা সম্পর্কে করছি থেকে n log n n হে উন্নত যাও, 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 n হে এটা করাতে কৌতুক হয় আমরা অন্য অ্যারে বলা আকারের সংখ্যা আবদ্ধ করা. 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 এই মাত্র সমগ্র অ্যারের 0 সেঃ হতে আরম্ভ হবে. 738 01:00:18,180 --> 01:00:25,320 সুতরাং আমি যদি তা করতে না চান, তাহলে আমি আলাদাভাবে জন্য কিছু করতে পারে (int i = 0; 739 01:00:25,320 --> 01:00:31,500 তোমার <আবদ্ধ; i + +) এবং সংখ্যা [i] = 0; 740 01:00:31,500 --> 01:00:35,260 তাই এখন 0 সবকিছু সক্রিয়া করা হয়. 741 01:00:35,260 --> 01:00:39,570 আমি আমার অ্যারের উপর বারবার, 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 সুতরাং Val 4 বা 8 যাই হোক না কেন বা হতে পারে. 748 01:01:14,850 --> 01:01:18,870 এবং এখন আমি যে মান যত আমি দেখা করেছি গণনা করছি, 749 01:01:18,870 --> 01:01:21,230 তাই সংখ্যা [Val] +; 750 01:01:21,230 --> 01:01:29,430 পরে এই জন্য এটা করা হয়, এই সংখ্যা এবং 0001 এর মত চেহারা হবে. 751 01:01:29,430 --> 01:01:42,190 চলুন শুরু করা যাক সংখ্যা না [Val] - + 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 এর 8 ম সূচীর একটি 1 দিন হবে. 757 01:02:10,210 --> 01:02:14,560 আমরা গণনা ঃ 23 তারিখের মধ্যে একটি সূচক 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 = সংখ্যা [i]. 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 উপর am, 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 am ঢোকাতে আমার সাজানো অ্যারের মধ্যে এর. 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 আপনি প্রায় কাছাকাছি সবসময় স্বাক্ষরবিহীন পূর্ণসংখ্যার মোকাবেলা করা উচিত. 797 01:05:45,950 --> 01:05:53,850 এই জন্য কারণ যখন আপনি সাইন পূর্ণসংখ্যার সঙ্গে লেনদেন করছেন, 798 01:05:53,850 --> 01:05:56,090 তাই আপনি যদি 2 সাইন ইন্টিজার আছে এবং আপনি তাদের একসঙ্গে যোগ করুন 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 এটা কিভাবে পূর্ণসংখ্যার কম্পিউটারে কাজ. 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 বা কিছু MAX হিসাবে সংজ্ঞায়িত করা যাবে না সংজ্ঞায়িত? 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 একটি টাইপ সুতরাং, সি বিশেষ ধ্রুবকের মত 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 1 টি প্লাস 6, 2 বার 1 যোগ 6, 2 বার 3 তুলনায় কম 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 তারপর যে যাও 3 কম 1 র পরিবর্তে পাওয়া যাচ্ছে সমান সমান 2, 872 01:11:49,760 --> 01:11:53,460 এবং তারপর, তাই এটি 1 থেকে 3 তুলনায় কম যাচ্ছে না, কিন্তু এর যে সমান 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 এব w বন্ধনী ববহার সর্বদা মোড়ানো. 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]