2-Ámeliyat jumısı. Sızıqlı hám Binar izlew


for i := 0; i < len(a); i++ { if


Download 64 Kb.
bet2/4
Sana02.01.2022
Hajmi64 Kb.
#196440
1   2   3   4
Bog'liq
Ámeliyat jumısı 36723

for i := 0; i < len(a); i++ {

if a[i] == condidate {

return i

}

}



return -1

}

Kórip turǵanımızday, funksiyamız 2 parametr qabıllaydı, birinshisi massivtiń ózi, ekinshisi biz izlep atırǵan element. Eger onı taba almasaq, "-1" mánisti qaytaramız.



Endi bunnan optimal bolǵan usıl - binar(ekilik) izlewdi kóreyik.

Bul usılda da funksiyaǵa 2 parametr, birinshisi massiv ózi keyin bolsa biz izlep atırǵan elementti parametr sıpatında beriladi. Izlew bolsa tómendegishe:

Aldın biz massiv bası hám aqırın ózimiz ushın ózgeriwshilerde belgilep alamız, meniń kodımda bul left hám right ózgeriwshileri:

left := 0 right := len(a)

keyninen tómendegi shárt orınlanǵan jaǵdayında

left < right

tómendegi izbe-iz ámellerdi ámelge asıramız:



  1. left hám right index leri orayındaǵı elementti tabamız (left + right) / 2

  2. tabılǵan elementimiz biz izlep atırgan elementke teń bolsa, onda mid elementti juwap sıpatında qaytaramız

  3. eger a[mid] elementimiz biz izlep atırǵan elementten kishi bolsa biz left = mid dep belgileymiz hám sonda a[mid:right] bóleginde izlew dawam etedi.

  4. eger a[mid] elementimiz biz izlep atırǵan elementten úlken bolsa demek right = mid dep belgileymiz sonda izlew a[left:mid] bóleginde izlew dawam etedi.

Usı túrde izlew left < right shárt orınlanǵanınsha dawam etedi, eger bul proseste biz izlegen element tabılmasa onda -1 juwap qaytarıladı, tómende programma kodı keltirilgen:

func binarySearch(a []int, condidate int) int {

left := 0

right := len(a)



for left < right {

mid := (left + right) / 2




Download 64 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling