1 00:00:00,000 --> 00:00:08,532 >> [সঙ্গীত বাজাচ্ছি] 2 00:00:08,532 --> 00:00:12,060 >> ZAMYLA Chan: আপনি প্রতাপ প্রথম জিনিস খুঁজে বিষয়ে নোটিশ যে ইতিমধ্যে আমরা 3 00:00:12,060 --> 00:00:13,450 কোড আমাদের জন্য লিখিত আছে. 4 00:00:13,450 --> 00:00:15,160 এই ডিস্ট্রিবিউশন কোড বলা হয়. 5 00:00:15,160 --> 00:00:18,000 তাই আমরা শুধু আমাদের নিজের লেখা করছি না আর স্ক্র্যাচ থেকে কোড. 6 00:00:18,000 --> 00:00:22,800 বরং, আমরা voids পূরণ করছি কিছু পূর্বে উপস্থিত কোডের. 7 00:00:22,800 --> 00:00:27,790 >> find.c প্রোগ্রাম সংখ্যার জন্য অনুরোধ জানানো হবে খড়ের গাদা ভরাট, অনুসন্ধান 8 00:00:27,790 --> 00:00:32,189 ব্যবহারকারীর জমা সুই জন্য খড়ের গাদা, এবং এটি সাজানোর আহ্বান এবং দ্বারা এই আছে 9 00:00:32,189 --> 00:00:35,590 অনুসন্ধান, ফাংশন নির্ধারণ helpers.c মধ্যে. 10 00:00:35,590 --> 00:00:37,670 সুতরাং find.c ইতিমধ্যে করা হবে না. 11 00:00:37,670 --> 00:00:40,770 আপনার কাজ সাহায্যকারী লিখতে হয়. 12 00:00:40,770 --> 00:00:41,870 >> সুতরাং আমরা কি করছেন? 13 00:00:41,870 --> 00:00:44,210 আমরা দুটি ফাংশন রূপায়ণকারী করছি. 14 00:00:44,210 --> 00:00:49,030 সত্য ফেরৎ যা অনুসন্ধান, যদি একটি মান ফিরে, খড়ের গাদা পাওয়া যায় 15 00:00:49,030 --> 00:00:51,370 মিথ্যা মূল্য যদি না খড়ের গাদা মধ্যে. 16 00:00:51,370 --> 00:00:57,990 এবং তারপর আমরা সাজানোর বাস্তবায়ন করছি যা মান বলা অ্যারে অসুস্থ. 17 00:00:57,990 --> 00:00:59,960 >> তাই এর সন্ধান মোকাবেলা যাক. 18 00:00:59,960 --> 00:01:04,560 অনুসন্ধান বর্তমানে একটি হিসাবে প্রয়োগ করা হয় রৈখিক অনুসন্ধান, কিন্তু আপনি অনেক কিছু করতে পারি 19 00:01:04,560 --> 00:01:05,550 যে বেশী ভালো. 20 00:01:05,550 --> 00:01:09,910 লিনিয়ার সার্চ হে প্রয়োগ করা হয় এন সময়, যা বেশ ধীর. 21 00:01:09,910 --> 00:01:13,850 যদিও, এটা অনুসন্ধান করতে পারেন এটি দেওয়া কোনো তালিকা. 22 00:01:13,850 --> 00:01:20,130 আপনার কাজ বাইনারি অনুসন্ধান বাস্তবায়ন হয়, লগ n সময় হে চালানো হয়েছে. 23 00:01:20,130 --> 00:01:21,130 যে বেশ দ্রুত. 24 00:01:21,130 --> 00:01:23,170 >> কিন্তু একটি কড়ার আছে. 25 00:01:23,170 --> 00:01:27,600 বাইনারি অনুসন্ধান শুধুমাত্র অনুসন্ধান করতে পারেন প্রাক সাজানো তালিকার মধ্যে. 26 00:01:27,600 --> 00:01:30,370 কেন হল? 27 00:01:30,370 --> 00:01:32,620 >> ওয়েল এর একটি উদাহরণ তাকান. 28 00:01:32,620 --> 00:01:36,280 মান একটি অ্যারের দেওয়া, খড়ের গাদা, আমরা খুঁজছেন করা চলুন 29 00:01:36,280 --> 00:01:37,130 একটি সুই জন্য. 30 00:01:37,130 --> 00:01:40,460 এবং এই উদাহরণে, পূর্ণসংখ্যা তিন. 31 00:01:40,460 --> 00:01:44,130 বাইনারি অনুসন্ধান কাজ করে যে ভাবে যে আমরা মাঝখানে মূল্য তুলনা 32 00:01:44,130 --> 00:01:48,370 অনেক ভালো সুই যাও অ্যারে, কিভাবে আমরা মাঝখানে একটি ফোনবুক খোলা 33 00:01:48,370 --> 00:01:50,660 সপ্তাহে শূন্য মধ্যে পাতা. 34 00:01:50,660 --> 00:01:54,650 >> তাই থেকে মধ্যম মূল্য তুলনা পরে সুই, আপনি হয় বাতিল পারেন 35 00:01:54,650 --> 00:01:58,530 বাম বা অ্যারের ডান অর্ধেক আপনার সীমার কষাকষি দ্বারা. 36 00:01:58,530 --> 00:02:03,390 এই ক্ষেত্রে, তিন, যেহেতু আমাদের সুই, কম 10, মধ্যম মানের, হয় 37 00:02:03,390 --> 00:02:05,990 ডান বাউন্ড হ্রাস করতে পারেন. 38 00:02:05,990 --> 00:02:08,400 কিন্তু আপনার কোট করতে চেষ্টা করুন যতটা সম্ভব টাইট. 39 00:02:08,400 --> 00:02:11,630 মধ্যম মান সুই নয়, তাহলে আপনি আপনি করতে হবে না জানি 40 00:02:11,630 --> 00:02:13,010 আপনার অনুসন্ধানের মধ্যে এটি অন্তর্ভুক্ত. 41 00:02:13,010 --> 00:02:17,310 সুতরাং আপনি ডান আবদ্ধ করছেন আঁট পারেন শুধু একটি অতি ক্ষুদ্র অংশ আরো অনুসন্ধান কোট, 42 00:02:17,310 --> 00:02:21,770 এবং তাই এবং তাই ঘোষণা না হওয়া পর্যন্ত আপনি আপনার সুই খুঁজে. 43 00:02:21,770 --> 00:02:23,480 >> তাই কি pseudocode কেমন হয়েছে? 44 00:02:23,480 --> 00:02:28,420 আমরা এখনও মাধ্যমে খোঁজ করছি ভাল সময় তালিকা এবং এখনও করার উপাদান আছে 45 00:02:28,420 --> 00:02:33,690 অল্পক্ষণের, আমরা তালিকা মাঝখানে গ্রহণ এবং যে মাঝখানে মূল্য তুলনা 46 00:02:33,690 --> 00:02:34,950 আমাদের সুই. 47 00:02:34,950 --> 00:02:37,310 তারা সমান হন, তাহলে যে আমরা করেছি মানে সুই পাওয়া গেছে এবং আমরা করতে পারেন 48 00:02:37,310 --> 00:02:38,990 সত্য ফিরে. 49 00:02:38,990 --> 00:02:42,870 >> অন্যথা, সুই কম হলে মধ্যম মান, তাহলে যে আমরা মানে 50 00:02:42,870 --> 00:02:47,280 ডান অর্ধেক বাতিল, এবং শুধু পারেন অ্যারে বামদিকে অনুসন্ধান. 51 00:02:47,280 --> 00:02:51,090 অন্যথা, আমরা অনুসন্ধান করব অ্যারের ডান দিকে. 52 00:02:51,090 --> 00:02:54,410 এবং শেষে, যদি আপনি কোনো না থাকে আরো অনুসন্ধান বাম উপাদান কিন্তু আপনি 53 00:02:54,410 --> 00:02:58,050 এর পরে, এখনো আপনার সুই পাওয়া যায় না মিথ্যা ফিরে কারণ সুই 54 00:02:58,050 --> 00:03:01,890 স্পষ্টভাবে খড়ের গাদা হয় না. 55 00:03:01,890 --> 00:03:05,270 >> এই pseudocode সম্পর্কে এখন একটি ঝরঝরে জিনিস বাইনারি অনুসন্ধান মধ্যে এটি হতে পারে 56 00:03:05,270 --> 00:03:09,940 একটি পুনরাবৃত্ত হয় হিসেবে ব্যাখ্যা বা recursive বাস্তবায়ন. 57 00:03:09,940 --> 00:03:13,810 আপনি বলা হলে সুতরাং recursive হবে সার্চ মধ্যে অনুসন্ধান ফাংশন 58 00:03:13,810 --> 00:03:17,350 অ্যারের হয় অর্ধেক উপর কাজ. 59 00:03:17,350 --> 00:03:21,030 আমরা একটু পরে মধ্যে recursion আবরণ করব অবশ্যই, কিন্তু এটি একটি যে জানেন 60 00:03:21,030 --> 00:03:24,190 বিকল্প আপনি চেষ্টা করতে চান না. 61 00:03:24,190 --> 00:03:26,030 >> এখন আসুন সাজানোর তাকান. 62 00:03:26,030 --> 00:03:30,750 সাজান একটি অ্যারে এবং পূর্ণসংখ্যা লাগে অ্যারের আকার যা এন,. 63 00:03:30,750 --> 00:03:34,030 এখন বিভিন্ন বিভিন্ন ধরনের আছে প্রকারের, এবং আপনি কিছু তাকান পারেন 64 00:03:34,030 --> 00:03:36,370 গণদেবতা এবং ব্যাখ্যার জন্য হাফপ্যান্ট. 65 00:03:36,370 --> 00:03:39,580 বিনিময়ে টাইপ আমাদের সাজানোর ফাংশন অকার্যকর হয়. 66 00:03:39,580 --> 00:03:43,580 সুতরাং যে আমরা চলুন না যে মানে সাজানোর থেকে কোনো অ্যারে ফিরে যাও. 67 00:03:43,580 --> 00:03:48,140 আমরা আসলে খুব পরিবর্তন চলুন আমাদের মধ্যে প্রেরণ করা হত যে অ্যারে. 68 00:03:48,140 --> 00:03:52,290 >> অ্যারে কারণ এবং যে সম্ভব আমরা এখন সি রেফারেন্স দ্বারা করব পাশ 69 00:03:52,290 --> 00:03:55,290 পরে এই বিষয়ে আরও দেখতে, কিন্তু পাশ করার মধ্যে অপরিহার্য পার্থক্য 70 00:03:55,290 --> 00:03:59,340 একটি পূর্ণসংখ্যা এবং পাশ করার মত কিছু একটি অ্যারের মধ্যে, যে যখন আপনি 71 00:03:59,340 --> 00:04:03,490 একটি পূর্ণসংখ্যা মধ্যে পাস, সি ঠিক যাচ্ছে যে পূর্ণসংখ্যা একটি কপি করতে এবং পাস 72 00:04:03,490 --> 00:04:04,450 ফাংশন এটি. 73 00:04:04,450 --> 00:04:08,530 মূল চলক পরিবর্তন করা হবে না ফাংশন সমাপ্ত হয় একবার. 74 00:04:08,530 --> 00:04:12,480 একটি অ্যারের সাথে, অন্য দিকে, এটা একটি কপি করা যাচ্ছে, এবং আপনি পাবেন না 75 00:04:12,480 --> 00:04:17,910 আসলে সম্পাদনা করা খুব অ্যারের নিজেই. 76 00:04:17,910 --> 00:04:21,269 >> তাই কেমন এক প্রকার নির্বাচন সাজানোর. 77 00:04:21,269 --> 00:04:24,750 নির্বাচন সাজানোর থেকে শুরু করে কাজ করে আপনি পুনরুক্তি তারপর শুরু, এবং 78 00:04:24,750 --> 00:04:26,820 উপর এবং ক্ষুদ্রতম উপাদান খুঁজে. 79 00:04:26,820 --> 00:04:30,710 এবং তারপর আপনি অদলবদল যে ক্ষুদ্রতম প্রথম এক সঙ্গে উপাদান. 80 00:04:30,710 --> 00:04:34,360 এবং তারপর আপনি দ্বিতীয় উপাদান সরাতে পরের ক্ষুদ্রতম খুঁজে 81 00:04:34,360 --> 00:04:38,320 তারপর উপাদান, এবং অদলবদল যে সঙ্গে অ্যারের মধ্যে দ্বিতীয় উপাদান কারণ 82 00:04:38,320 --> 00:04:41,100 প্রথম উপাদান ইতিমধ্যেই সাজানো হয়. 83 00:04:41,100 --> 00:04:45,370 এবং তারপর, তাই আপনি প্রতি জন্য অবিরত ক্ষুদ্রতম চিহ্নিত উপাদান 84 00:04:45,370 --> 00:04:47,690 মূল্য এবং এটি সোয়াপিং. 85 00:04:47,690 --> 00:04:53,460 >> আমি 0, খুব প্রথম উপাদান সমান জন্য এন বিয়োগ 1 জন্য, আপনার তুলনা চলুন 86 00:04:53,460 --> 00:04:57,820 প্রতি পরবর্তী এর পর মান এবং খুঁজে সর্বনিম্ন মূল্যের সূচী. 87 00:04:57,820 --> 00:05:02,520 আপনি সর্বনিম্ন মূল্য সূচক খুঁজতে হলে আপনি অ্যারের যে মান অদলবদল করতে পারেন 88 00:05:02,520 --> 00:05:05,930 সর্বনিম্ন এবং অ্যারের আই 89 00:05:05,930 --> 00:05:09,760 >> সাজানোর আরেক ধরনের যে আপনি যা করতে পারেন বাস্তবায়ন বুদ্বুদ সাজান. 90 00:05:09,760 --> 00:05:14,380 তালিকা ধরে সুতরাং বুদ্বুদ সাজানোর iterates সন্নিহিত উপাদান এবং তুলনা 91 00:05:14,380 --> 00:05:17,720 উপাদান সোয়াপিং যে ভুল যাতে হয়. 92 00:05:17,720 --> 00:05:22,380 এবং এই ভাবে, বৃহত্তম উপাদান বুদ্বুদ শেষ হবে. 93 00:05:22,380 --> 00:05:28,070 আর তালিকার একবার কোন সাজানো হয় উপাদান আনা হয়েছে. 94 00:05:28,070 --> 00:05:31,920 >> তাই ঐ ধরণের দুটি উদাহরণ আপনার জন্য বাস্তবায়ন করতে পারে আলগোরিদিম 95 00:05:31,920 --> 00:05:33,230 খুঁজে প্রোগ্রাম. 96 00:05:33,230 --> 00:05:37,350 আপনি সাজানোর শেষ, এবং আপনি করেছি একবার অনুসন্ধান সম্পন্ন, আপনি সমাপ্ত করছি. 97 00:05:37,350 --> 00:05:39,720 আমার নাম Zamyla, এবং এই CS50. 98 00:05:39,720 --> 00:05:46,987 >> [সঙ্গীত বাজাচ্ছি]