Kompjûters, Programming
Binary search - ien fan de maklikste manieren om te finen in elemint yn in rige
Hiel faak, programmeurs, sels begjinners, konfrontearre mei it feit dat der in set fan nûmers, dy't moatte fine in spesifike nûmer. It is dizze kolleksje hjit in rige is. En te finen items yn it, der binne it heden al gâns fan wizen. Mar de meast ienfâldich dêrfan kin beskôge in binêre sykje oan de rjochterkant. Wat is dy metoade is? En hoe te fieren binary sykje? Pascal is de maklikste omjouwing foar de organisaasje fan sa'n programma, dus wy sille it brûke om te studearjen.
Earst, analysearje, wat binne de foardielen fan dizze metoade, it is dus kinne wy begripe,
Dus, wat is it wurkjende prinsipe fan dizze metoade? Fuortendaliks it moat sizze dat binêre sykjen wurket, is net yn elke rige, mar allinne op in sortearre set fan nûmers. By eltse stap nommen midden elemint fan de array (betsjut it nûmer fan it elemint). Kontrollearje of it nedige oantal grutter is as it gemiddelde, dan alles wat oerbleaun is, dat is minder as de gemiddelde sel, kin wiske wurde en net te sjen dêr. Oarsom as minder as it gemiddelde - ûnder dy nûmers oan 'e rjochterkant, kinne jo net sykje. Dan Selektearje in nije sykje gebiet, dêr't it earste elemint sil wêze it midden elemint fan de hiele rige, en de lêste en de lêste wil. It gemiddelde oantal nije fjild sil wêze ¼ fan alle segment, dat is, (de lêste elemint + it midden elemint fan de hiele rige) / 2. Wer, deselde operaasje wurdt útfierd - in ferliking mei it trochsneed tal fan 'e rige. As de Doelwearde is minder as it gemiddelde, fersmite wy de rjochter kant, en ek te dwaan njonken, oant no ta dizze midden elemint soe net winske.
Fansels is it bêste om te sjen nei in foarbyld fan hoe't te skriuwen binary sykjen. Pascal hjir sil suit immen - ferzje is net fan belang. Lit ús skriuw in ienfâldige programma.
It is in rige is fan 1 oant h ûnder de namme "massiv", in fariabele oanjout de legere grins fan it sykjen, neamd "Ode", de boppeste limyt, neamd "Verh", it gemiddelde sykopdracht - "sredn"; en it fereaske oantal - "isk".
Dus, earst wy tawize de boppeste en ûnderste limyt fan it berik Search:
Ode: = 1;
Verh: = h + 1;
Dan organisearje de syklus "oant de ûnderkant is minder as de boppeste limyt":
Wylst Ode
By eltse stap, wy ferdiele it segment 2:
sredn: = (Ode + Verh) div 2; {Brûk de funksje div, omdat de divide sûnder remainder}
Eltse tiid fan resinsje. Om't it item is al fûn as it medium wurdt winske, interrupt syklus:
іf sredn = isk dan brekke;
As de middelste elemint fan de rige mear as winske, negearje de linker kant, dat is, de boppeste grins fan it gemiddelde beneame elemint:
as massiv [sredn]> isk dan Verh: = sredn;
En as krekt oarsom, dat makket de legere grins:
oars Ode: = sredn;
end;
Dat is alles, dat sil wêze yn it programma.
Nim no hoe't it sil sjen de binaire metoade yn de praktyk. Betink dit array: 1, 3, 5, 7, 10, 12, 18 en it scil sykje it nûmer 12.
Yn totaal hawwe wy 7 eleminten, sa sil de fjirde medium, de wearde 7.
1 | 3 | 5 | 7 | 10 | 12 | 18 |
Sûnt mear as 12, 7, 1.3 en 5 eleminten, wy kinne wurde. Dan wy ha it nûmer 4, 4/2 gjin residu is 2. Sa, in nij elemint sil in trochsneed fan 10.
7 | 10 | 12 | 18 |
Hjir, de middelste elemint is al 12, it is it fereaske tal. Dizze taak is klear - nûmer 12 fûn.
Similar articles
Trending Now