1 00:00:00,000 --> 00:00:08,532 >> [MUSIC پخش] 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 در عوض، ما در حال پر کردن فضاهای خالی در برخی از کد موجود از قبل. 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 جستجو، جایی که بازگرداندن true اگر مقدار در انبار کاه یافت، بازگشت 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 جستجو خطی در O اجرا از زمان n که کاملا آرام است. 21 00:01:09,910 --> 00:01:13,850 هر چند، آن را می توانید جستجو هر لیست داده شده به آن است. 22 00:01:13,850 --> 00:01:20,130 کار شما این است برای اجرای جستجوی دودویی، تا آن زمان O از ورود به سیستم نفر اجرا شود. 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 >> پس چه شبه شبیه؟ 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 >> در حال حاضر چیزی شسته و رفته در مورد این شبه در جستجوی دودویی است که می توان آن را 56 00:03:05,270 --> 00:03:09,940 تفسیر به صورت تکرار شونده و یا پیاده سازی بازگشتی. 57 00:03:09,940 --> 00:03:13,810 بنابراین این امر می تواند بازگشتی اگر شما به نام تابع جستجو در جستجو 58 00:03:13,810 --> 00:03:17,350 عمل در هر نیمه از آرایه. 59 00:03:17,350 --> 00:03:21,030 ما به بازگشت و کمی بعد در پوشش البته، اما نمی دانم که آن است 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 مرتب سازی بر طول می کشد یک آرایه و عدد صحیح n که اندازه آرایه. 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 >> و این ممکن است به دلیل آرایه ها تصویب شده توسط مرجع در C. حالا 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 پاس در یک عدد صحیح، C فقط رفتن به کپی یک نسخه از که عدد صحیح و با تصویب 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، عنصر اول به n منهای 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 حداقل و آرایه I. 89 00:05:05,930 --> 00:05:09,760 >> نوع دیگری از نوعی که شما می توانید پیاده سازی مرتب سازی حبابی است. 90 00:05:09,760 --> 00:05:14,380 بنابراین تکرار مرتب سازی بر حباب در بالای لیست مقایسه عناصر مجاور و 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 >> [MUSIC پخش]