1 00:00:00,000 --> 00:00:13,300 2 00:00:13,300 --> 00:00:15,010 >> ROB BOWDEN: Hi, Im 'Rob. 3 00:00:15,010 --> 00:00:16,790 Sut ydym yn cyflogi chwiliad deuaidd? 4 00:00:16,790 --> 00:00:18,770 Gadewch i ni gael gwybod. 5 00:00:18,770 --> 00:00:23,400 Felly, yn nodi bod chwiliad hwn rydym yn mynd i weithredu recursively. 6 00:00:23,400 --> 00:00:27,470 Gallech hefyd yn gweithredu chwiliad deuaidd iteraidd, felly os ydych yn gwneud hynny, 7 00:00:27,470 --> 00:00:29,280 mae hynny'n berffaith iawn. 8 00:00:29,280 --> 00:00:32,820 >> Nawr yn gyntaf, gadewch i ni gofio yr hyn y mae'r paramedrau i chwilio yn cael eu golygu i fod. 9 00:00:32,820 --> 00:00:36,120 Yma, rydym yn gweld gwerth int, sy'n i fod i fod yn y gwerth y mae'r defnyddiwr yn 10 00:00:36,120 --> 00:00:37,320 chwilio am. 11 00:00:37,320 --> 00:00:40,800 Rydym yn gweld yr amrywiaeth gwerthoedd int, a oedd yn yn y casgliad yr ydym yn 12 00:00:40,800 --> 00:00:42,520 chwilio am werth. 13 00:00:42,520 --> 00:00:45,602 Ac rydym yn gweld int n, sy'n hyd ein amrywiaeth. 14 00:00:45,602 --> 00:00:47,410 >> Yn awr, peth cyntaf yn gyntaf. 15 00:00:47,410 --> 00:00:51,350 Rydym yn gwirio i weld os n hafal i 0, yn ac os felly byddwn yn dychwelyd ffug. 16 00:00:51,350 --> 00:00:54,770 Dim ond Dyna dweud os oes gennym gwag amrywiaeth, gwerth yn amlwg heb fod mewn 17 00:00:54,770 --> 00:00:57,860 amrywiaeth gwag, fel y gallwn ddychwelyd ffug. 18 00:00:57,860 --> 00:01:01,250 >> Nawr, rydym mewn gwirionedd yn awyddus i wneud y deuaidd Chwilio yn rhan o chwiliad deuaidd. 19 00:01:01,250 --> 00:01:04,780 Felly, rydym yn awyddus i ddod o hyd i'r canol elfen o amrywiaeth hwn. 20 00:01:04,780 --> 00:01:09,130 Yma, rydym yn dweud canol yn dychwelyd n rhannu 2, gan fod yr elfen canol yn 21 00:01:09,130 --> 00:01:12,240 mynd i fod hyd ein casgliad wedi'i rannu â 2. 22 00:01:12,240 --> 00:01:15,040 Nawr rydym yn mynd i wirio i weld os yw'r elfen canol hafal gwerth rydym yn 23 00:01:15,040 --> 00:01:16,160 chwilio am. 24 00:01:16,160 --> 00:01:21,030 Felly os gwerthoedd canol hafal werth, rydym yn gallu dychwelyd yn wir ers i ni dod o hyd i'r 25 00:01:21,030 --> 00:01:22,810 gwerth yn ein casgliad. 26 00:01:22,810 --> 00:01:26,380 >> Ond os nad oedd hynny'n wir, erbyn hyn mae angen i ni wneud y dychweliadol 27 00:01:26,380 --> 00:01:27,840 cam o'r chwiliad deuaidd. 28 00:01:27,840 --> 00:01:30,450 Mae angen i ni chwilio naill ai i'r chwith y rhesi neu i'r 29 00:01:30,450 --> 00:01:32,320 nghanol y rhesi. 30 00:01:32,320 --> 00:01:39,280 Felly dyma, rydym yn dweud os gwerthoedd yn canol yn llai na gwerth, mae hynny'n golygu bod y gwerth 31 00:01:39,280 --> 00:01:41,350 yn fwy na'r canol y rhesi. 32 00:01:41,350 --> 00:01:45,790 Felly mae'n rhaid i werth fydd i'r dde o'r elfen yr ydym newydd edrych ar. 33 00:01:45,790 --> 00:01:48,090 >> Felly dyma, rydym yn mynd i chwilio recursively. 34 00:01:48,090 --> 00:01:50,320 A byddwn yn edrych ar yr hyn rydym yn pasio i hyn mewn eiliad. 35 00:01:50,320 --> 00:01:53,440 Ond rydym yn mynd i chwilio i'r dde o'r elfen canol. 36 00:01:53,440 --> 00:01:57,710 Ac yn yr achos arall, mae hynny'n golygu bod gwerth yn llai na chanol y 37 00:01:57,710 --> 00:02:00,660 amrywiaeth, ac felly rydym yn mynd i chwilio ar y chwith. 38 00:02:00,660 --> 00:02:03,520 Yn awr, y chwith yn mynd i fod ychydig yn haws i edrych ar. 39 00:02:03,520 --> 00:02:07,770 Felly, rydym yn gweld yma ein bod ni'n recursively galw chwiliad lle cyntaf 40 00:02:07,770 --> 00:02:10,120 ddadl yw, unwaith eto, mae'r gwerth rydym yn edrych drosodd. 41 00:02:10,120 --> 00:02:14,970 Yr ail ddadl yn mynd i fod y amrywiaeth ein bod yn chwilio drosodd. 42 00:02:14,970 --> 00:02:17,090 A'r elfen olaf yn awr yw canol. 43 00:02:17,090 --> 00:02:21,650 Cofiwch y paramedr olaf yw ein int n, felly dyna hyd ein amrywiaeth. 44 00:02:21,650 --> 00:02:25,310 >> Yn yr alwad ailadroddus i chwilio, rydym yn ei ddweud yn awr bod hyd y 45 00:02:25,310 --> 00:02:27,230 amrywiaeth yn canol. 46 00:02:27,230 --> 00:02:32,900 Felly, os yw ein amrywiaeth oedd o faint 20 ac rydym yn chwilio am mynegai 10, gan fod canol yn 47 00:02:32,900 --> 00:02:36,930 20 wedi'i rannu â 2, mae hynny'n golygu ein bod fynd heibio 10 gan fod y newydd 48 00:02:36,930 --> 00:02:38,300 hyd ein amrywiaeth. 49 00:02:38,300 --> 00:02:41,910 Cofiwch, pan fyddwch yn cael amrywiaeth hyd 10, mae hynny'n golygu y dilys 50 00:02:41,910 --> 00:02:45,450 elfennau mewn mynegeion 0 i 9. 51 00:02:45,450 --> 00:02:50,120 Felly, mae hyn yn union yr hyn yr ydym am ei nodi ein amrywiaeth yn ddiweddar - y chwith 52 00:02:50,120 --> 00:02:53,010 amrywiaeth o'r elfen canol. 53 00:02:53,010 --> 00:02:55,710 >> Felly, gan edrych i'r dde yn ychydig yn fwy anodd. 54 00:02:55,710 --> 00:03:00,170 Nawr yn gyntaf, gadewch i ni ystyried hyd y rhesi ar y dde o'r 55 00:03:00,170 --> 00:03:01,240 elfen canol. 56 00:03:01,240 --> 00:03:08,390 Felly, os yw ein amrywiaeth oedd o faint n, yna bydd y Bydd casgliad newydd fod o faint n minws 57 00:03:08,390 --> 00:03:10,140 minws canol 1. 58 00:03:10,140 --> 00:03:12,530 Felly, gadewch i ni feddwl n canol minws. 59 00:03:12,530 --> 00:03:18,710 >> Unwaith eto, os yw'r casgliad yn o faint 20 a rydym yn rhannu â 2 i gael y canol, 60 00:03:18,710 --> 00:03:23,540 felly mae'r canol yn 10, yna mae n minws canol yn mynd i roi i ni 10, felly 10 61 00:03:23,540 --> 00:03:25,330 elfennau i'r dde o'r canol. 62 00:03:25,330 --> 00:03:27,780 Ond mae gennym hefyd minws hwn 1, gan nad ydym am i 63 00:03:27,780 --> 00:03:29,700 gynnwys y canol ei hun. 64 00:03:29,700 --> 00:03:34,190 Felly, n llai canol minws 1 yn rhoi i ni y cyfanswm nifer o elfennau i'r dde 65 00:03:34,190 --> 00:03:36,800 o'r mynegai canol yn y rhesi. 66 00:03:36,800 --> 00:03:41,870 >> Nawr dyma, cofiwch fod y canol paramedr yn yr amrywiaeth gwerthoedd. 67 00:03:41,870 --> 00:03:46,180 Felly dyma, rydym yn basio amrywiaeth gwerthoedd diweddaru. 68 00:03:46,180 --> 00:03:50,930 Mae hyn yn ogystal â gwerthoedd plws canol 1 yn mewn gwirionedd yn dweud recursively ffoniwch 69 00:03:50,930 --> 00:03:56,460 chwilio, gan fynd heibio mewn amrywiaeth newydd, lle y casgliad newydd yn dechrau yn y canol 70 00:03:56,460 --> 00:03:59,370 ynghyd ag un o'n gwerthoedd amrywiaeth gwreiddiol. 71 00:03:59,370 --> 00:04:05,400 >> Mae cystrawen arall am hynny, nawr bod ydych wedi dechrau i weld awgrymiadau, yn 72 00:04:05,400 --> 00:04:10,170 gwerthoedd ampersand yn ogystal canol 1. 73 00:04:10,170 --> 00:04:17,149 Felly, chrafangia 'r cyfeiriad y canol ynghyd ag un elfen o werthoedd. 74 00:04:17,149 --> 00:04:23,690 >> Yn awr, os nad ydych yn gyfforddus addasu amrywiaeth fel 'na, rydych yn 75 00:04:23,690 --> 00:04:28,900 gallai hefyd wedi gweithredu hyn drwy ddefnyddio swyddogaeth cynorthwy-ydd ailadroddus, lle 76 00:04:28,900 --> 00:04:31,680 swyddogaeth honno cynorthwy-ydd yn cymryd mwy o ddadleuon. 77 00:04:31,680 --> 00:04:36,610 Felly, yn lle cymryd dim ond y gwerth, mae'r amrywiaeth, a maint y rhesi, 78 00:04:36,610 --> 00:04:42,315 gallai'r swyddogaeth cynorthwy-ydd gymryd mwy o dadleuon, gan gynnwys y mynegai isaf 79 00:04:42,315 --> 00:04:45,280 y byddech yn gofalu amdanynt yn y casgliad a'r mynegai uchaf yr ydych yn gofalu 80 00:04:45,280 --> 00:04:46,300 am y rhesi. 81 00:04:46,300 --> 00:04:49,770 >> Ac felly cadw golwg ar y isaf mynegai a'r mynegai uchaf, nad ydych yn 82 00:04:49,770 --> 00:04:52,780 angen i addasu erioed gwerthoedd gwreiddiol arae. 83 00:04:52,780 --> 00:04:56,390 Alli jyst barhau i defnyddio'r amrywiaeth gwerthoedd. 84 00:04:56,390 --> 00:04:59,540 Ond yma, sylwch nad oes angen cynorthwy-ydd i ni weithredu cyhyd ag y byddwn yn 85 00:04:59,540 --> 00:05:01,760 yn barod i addasu'r gwreiddiol gwerthoedd amrywiaeth. 86 00:05:01,760 --> 00:05:05,020 Rydym yn barod i basio yn yn gwerthoedd diweddaru. 87 00:05:05,020 --> 00:05:09,140 >> Nawr, ni allwn chwiliad deuaidd dros amrywiaeth sy'n heb eu didoli. 88 00:05:09,140 --> 00:05:12,220 Felly, gadewch i ni ddatrys hyn. 89 00:05:12,220 --> 00:05:17,650 Yn awr, yn sylwi bod math heibio dau paramedrau int gwerthoedd, sef y 90 00:05:17,650 --> 00:05:21,110 amrywiaeth ein bod yn didoli, a int n, sef hyd y rhesi a 91 00:05:21,110 --> 00:05:22,250 rydym yn didoli. 92 00:05:22,250 --> 00:05:24,840 Felly, yma rydym yn awyddus i weithredu algorithm didoli 93 00:05:24,840 --> 00:05:26,690 hynny yw o n sgwâr. 94 00:05:26,690 --> 00:05:30,560 Gallech ddewis math swigen, dewis fath, neu fath gosod, neu 95 00:05:30,560 --> 00:05:32,670 rhyw fath arall nid ydym wedi gweld yn y dosbarth. 96 00:05:32,670 --> 00:05:36,380 Ond yma, rydyn ni'n mynd i ddefnyddio'r math dethol. 97 00:05:36,380 --> 00:05:40,030 >> Felly, rydym yn mynd i ailadrodd dros yr amrywiaeth cyfan. 98 00:05:40,030 --> 00:05:44,360 Wel, dyma ni yn gweld ein bod yn bwysleisio'r o 0 i n minws 1. 99 00:05:44,360 --> 00:05:45,990 Beth am yr holl ffordd i fyny at n? 100 00:05:45,990 --> 00:05:49,320 Wel, os ydym eisoes wedi datrys y cyntaf n minws 1 Elfennau, yna bydd y 101 00:05:49,320 --> 00:05:54,420 elfen olaf hyn y mae'n rhaid fod yn barod yn y lle cywir, felly trefnu dros 102 00:05:54,420 --> 00:05:56,520 yr amrywiaeth cyfan. 103 00:05:56,520 --> 00:05:58,770 >> Yn awr, cofio sut dethol fath yn gweithio. 104 00:05:58,770 --> 00:06:01,950 Rydym yn mynd i fynd dros y casgliad cyfan chwilio am y gwerth lleiaf mewn 105 00:06:01,950 --> 00:06:04,480 yr amrywiaeth a ffon sy'n ar y dechrau. 106 00:06:04,480 --> 00:06:07,610 Yna, rydym yn mynd i fynd dros y cyfan amrywiaeth eto yn chwilio am yr ail 107 00:06:07,610 --> 00:06:10,410 elfen lleiaf, a ffon sy'n yn yr ail safle yn y 108 00:06:10,410 --> 00:06:12,100 amrywiaeth, ac yn y blaen. 109 00:06:12,100 --> 00:06:14,330 Felly, dyna beth mae hyn yn ei wneud. 110 00:06:14,330 --> 00:06:17,290 >> Yma, rydym yn gweld ein bod ni'n gosod isafswm ar hyn o bryd 111 00:06:17,290 --> 00:06:20,030 gwerth at y mynegai i-fed. 112 00:06:20,030 --> 00:06:23,160 Felly, ar y iteriad cyntaf, rydym yn mynd i ystyried y gwerth lleiaf i fod yn 113 00:06:23,160 --> 00:06:25,030 y dechrau ein amrywiaeth. 114 00:06:25,030 --> 00:06:28,500 Yna, rydym yn mynd i ailadrodd dros y gweddill y rhesi, gwirio i 115 00:06:28,500 --> 00:06:31,870 weld a oes unrhyw elfennau llai yno nag yr un yr ydym yn hyn o bryd 116 00:06:31,870 --> 00:06:33,900 ystyried y lleiaf. 117 00:06:33,900 --> 00:06:38,840 >> Felly dyma, yn rhoi gwerth j ac un - mae hynny'n yn llai na'r hyn yr ydym ar hyn o bryd 118 00:06:38,840 --> 00:06:40,380 ystyried y lleiaf. 119 00:06:40,380 --> 00:06:42,940 Yna, rydym yn mynd i ddiweddaru pa yn ein barn ni yw'r lleiafswm i 120 00:06:42,940 --> 00:06:44,640 mynegai j plws 1. 121 00:06:44,640 --> 00:06:48,540 Felly, yn gwneud hynny ar draws yr amrywiaeth cyfan, ac ar ôl hyn ar gyfer dolen, isafswm 122 00:06:48,540 --> 00:06:53,160 Dylai fod yn elfen lleiaf o y sefyllfa i-fed yn y rhesi. 123 00:06:53,160 --> 00:06:57,350 >> Unwaith y byddwn wedi hynny, gallwn gyfnewid y isafswm gwerth i mewn i'r sefyllfa i-fed 124 00:06:57,350 --> 00:06:58,230 yn y rhesi. 125 00:06:58,230 --> 00:07:00,130 Felly, mae hyn yn unig yw cyfnewid safonol. 126 00:07:00,130 --> 00:07:03,940 Rydym yn cadw mewn gwerth dros dro - i-fed gwerth yn yr arae - 127 00:07:03,940 --> 00:07:08,460 rhoi yn y i-fed gwerth yn yr arae y gwerth isafswm sy'n perthyn yno, 128 00:07:08,460 --> 00:07:13,580 ac yna'i storio yn ôl i lle mae'r gwerth lleiaf cyfredol a ddefnyddir i fod yn 129 00:07:13,580 --> 00:07:16,460 i-fed gwerth yn yr arae, felly na wnaethom golli. 130 00:07:16,460 --> 00:07:20,510 >> Felly, mae hynny'n parhau ar y fersiwn nesaf. 131 00:07:20,510 --> 00:07:23,480 Byddwn yn dechrau chwilio am yr ail gwerth lleiaf a rhowch hynny yn y 132 00:07:23,480 --> 00:07:24,590 ail safle. 133 00:07:24,590 --> 00:07:27,440 Ar y trydydd ailadroddiad, byddwn yn edrych am y trydydd gwerth lleiaf a mewnosoder 134 00:07:27,440 --> 00:07:31,550 hynny yn y trydydd safle, ac yn y blaen ymlaen nes gennym amrywiaeth ddidoli. 135 00:07:31,550 --> 00:07:33,820 Fy enw i yw Rob, ac mae hyn yn Roedd fath dethol. 136 00:07:33,820 --> 00:07:39,456