O`rtadagi element 37 ga teng, 32<37 bo`lganligi uchun uni chap tomondan izlashni davom qildiramiz. L = 6, R = M =9, M = 7
4
7
10
14
18
25
28
32
37
41
46
L R M 1
2
3
4
5
6
7
8
9
10
11
O`rtadagi element 37 ga teng, 32
<37 bo`lganligi uchun uni chap tomondan izlashni davom qildiramiz. L = 6, R = M =9, M = 7
4
7
10
14
18
25
28
32
37
41
46
L R M 1
2
3
4
5
6
7
8
9
10
11
O`rtadagi element 28 ga teng, 32≥28 bo`lganligi uchun uni o`ng tomondan izlashni davom qildiramiz. L = M = 7, R = 9, M = 8
O`rtadagi element 28 ga teng, 32≥28 bo`lganligi uchun uni o`ng tomondan izlashni davom qildiramiz. L = M = 7, R = 9, M = 8
4
7
10
14
18
25
28
32
37
41
46
L R M 1
2
3
4
5
6
7
8
9
10
11
4
7
10
14
18
25
28
32
37
41
46
L R M 1
2
3
4
5
6
7
8
9
10
11
4
7
10
14
18
25
28
32
37
41
46
L R M 1
2
3
4
5
6
7
8
9
10
11
O`rtadagi element 32 ga teng, 32≥28 bo`lganligi uchun uni o`ng tomondan izlashni davom qildiramiz. L = M = 8, R = 9.
R-L=1bo`lganida izlashni tugatamiz, izlanayotgan sonimiz L indeksda joylashgan massiv elementiga teng.
4
7
10
14
18
25
28
32
37
41
46
L R 1
2
3
4
5
6
7
8
9
10
11
Binar qidiruv algoritmi funksiyasi.
int binsearch(int x, int n) {
int L = 1, R = n+1;
while (R-L > 1) {
int M = (L+R) / 2;
if (a[M] <= x)
L = M;
else
R = M;
}
if (a[L]==x)
return L;
return -1;
}
Binar qidiruv algoritmi funksiyasi2.
int binsearch(int x, int n) {
int L = 1, R = n+1;
while (R-L > 1) {
int M = (L+R) / 2;
if (a[M] < x)
L = M;
else
R = M;
}
if (a[R]==x)
return R;
return -1;
}
Binar qidiruv daraxti. Masalaning qo’yilishi
Sonlar to’plamini saqlovchi va quyidagi amallarni bajara olish imkoniyati bo’lgan ma’lumot tuzilmasini yaratish lozim:
son qo’shish
sonni topish
sonni o’chirish
minimalni topish
maksimalni topish
qiymat bo’yicha k-sonni topish(k-tartibli statistika)