Computer, Zokuhlela
Uphendlo Binary - enye yezona ndlela ilula ukufumana element in an uluhlu
Lidla badwelisi benkqubo, nkqu wabaqalayo, senze into yokuba kukho iseti yamanani, nekufuneka ukufumana inani elithile. Yiyo le ngqokelela kuthiwa ezifanayo. Kwaye ukufumana izinto kulo, kukho ezininzi ezahlukahlukeneyo. Kodwa elula uninzi lwabo nga kuthathelwa ingqalelo ukhangelo yokubini ngasekunene. Yintoni na le ndlela? Nokuba kusekwa kanjani ukufuna yokubini? Pascal okusingqongileyo ilula lokuququzelela inkqubo enjalo, ngoko siza kuyisebenzisa ukuba ukufunda.
Okokuqala, hlolisisa, yintoni iingenelo yale ndlela, ukuba uyakwazi ukuqonda ukuze thina,
Ngoko ke, yintoni na umgaqo lonxibelelwano le ndlela? Ngoko nangoko ke uthi uphendlo lokubini osebenzayo akakho na uluhlu, kodwa kuphela kwiisethi ehleliweyo amanani. Kwinyathelo esithathwe isiqalelo ngasinye phakathi uluhlu (okuthetha inani element). Ukuba elifunekayo inani mkhulu ngaphezu komndilili, ngoko yonke into eseleyo, oko kukuthi ngaphantsi kwe yeseli avareji, na ezinokuyekwa, hayi ukukhangela khona. Kwelinye icala, ukuba ngaphantsi kwe-avareji - phakathi kwabo amanani ukuya ekunene, uyakwazi ukuphendla. Emva koko khetha indawo entsha search, apho Into yokuqala iya kuba element phakathi lonke uluhlu, kwaye yokugqibela kunye nentando wokugqibela. I-avareji yenani intsimi entsha iya kuba ¼ onke ceke, oko kukuthi, (i element yokugqibela + le nto phakathi lonke uluhlu) / 2. Kwakhona, umsebenzi ofanayo luyenziwa - uthelekiso ne-avareji yenani ziyakhele uluhlu. Ukuba ixabiso target lingaphantsi kwe-avareji, singayamkeli ngasekunene, kwaye kananjalo ukuba benze elandelayo, kude kube ngoku lwesi sakhi eliphakathi akayi ezinqwenelekayo.
Kakade ke, yona ilungileyo ukujonga umzekelo indlela yokubhala uphendlo yokubini. Pascal apha uya zilungele nabani - version ayibalulekanga. Masibhale inkqubo elula.
Lo uluhlu-1 ukuya h phantsi kwegama "massiv", variable ebonisa umda esezantsi uphendlo, ebizwa ngokuba "niz", nelona qondo liphezulu, ebizwa ngokuba "verh", i-avareji elithi yokukhangela - "sredn"; kwaye inani elifunekayo - "isk".
Ngoko ke, okokuqala thina kubabela umda ongentla ngaphantsi kwebanga wophendlo:
niz: = 1;
verh: = h + 1;
Emva koko ahlele umjikelo "de emazantsi lingaphantsi kwe-mda eliphezulu":
Nangona niz
Kwinyathelo ngalinye, sisahlula ingxenye 2:
sredn: = (niz + verh) div 2; {Sebenzisa umsebenzi div, ngenxa yokuba umsantsa ngaphandle intsalela}
ixesha ngalinye ngokutsha. Ngenxa yokuba le nto sele kufunyenwe ukuba eliphakathi ayinqwenelayo, ziphazamise kumjikelo:
іf sredn = isk ke kuyaphula;
Ukuba element phakathi uluhlu ngaphezu oyifunayo, ulahle kwicala lasekhohlo, oko kukuthi, lo umda ongentla we computeryomndilili amisele element:
ukuba massiv [sredn]> isk ngoko verh: = sredn;
Ukuba phezu koko, yenza umda asezantsi:
niz enye into: = sredn;
iphele;
Kuko konke oko kuya kuba kule nkqubo.
Makhe siqwalasele ukuba iza kukhangeleka njani na indlela kabini practice. Qwalasela le uluhlu: 1, 3, 5, 7, 10, 12, 18 yaye oko kuya kufuna inani 12.
Xa iyonke esinayo izinto 7, kanjalo eliphakathi yesine, ixabiso-7.
| 1 | 3 | 5 | 7 | 10 | 12 | 18 |
Ekubeni ngaphezulu kwe-12, 7, 1.3 no-5 elements, singakwazi ulahle. Emva koko Umelwe inani 4, 4/2 akukho intsalela ngu 2. Ngoko ke, into entsha iya kuba umlinganiselo we-10.
| 7 | 10 | 12 | 18 |
Apha, element eliphakathi sele-12, oko kukuthi inani elifunekayo. Lo msebenzi sele sigqityiwe - inani 12 Ayifumaneki.
Similar articles
Trending Now