KompjûtersProgramming

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, wat is it punt yn de stúdzje fan it ûnderwerp. Sa, lit ús hawwe in rige is mei in diminsje fan op syn minst 100000000 eleminten, dy't nedich te finen wat. Fansels, dit probleem kin maklik oplost troch in ienfâldich lineêre sykje, dêr't wy binne mei help fan it fytspaad sil ferlykje de fereaske elemint mei al dyjingen dy't yn 'e pronk. It probleem is dat de útfiering fan dit idee sil nimme tefolle tiid. Yn in ienfâldige Pascal programma yn ferskate behandelingen, en trije rigels fan 'e wichtichste tekst, jimme sels net troch, mar doe't wy komme ta in mear of minder grutte projekten mei in grut tal tûken en goede funksjonaliteit, it programma sil klear te laden wurde foar te lang. Foaral as de kompjûter is in swak optreden. Dêrom is der in binêr sykje, dy't fermindert sykje tiid op syn minst twaris.

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 begjinne

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

Sûnt 12 grutter is as 10, wy meitjen 7. bliuwt mar 10, 12 en 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

 

 

 

 

Newest

Copyright © 2018 fy.atomiyme.com. Theme powered by WordPress.