Expand description
§Qidiruv algoritmlari (Searching)
Darslik: 03-searching/
| Algoritm | Ma’lumot tartiblanganmi? | Time (o’rtacha/eng yomon) | Space |
|---|---|---|---|
linear_search | Yo’q | O(n) / O(n) | O(1) |
binary_search | Ha | O(log n) / O(log n) | O(1) |
lower_bound / upper_bound | Ha | O(log n) | O(1) |
exponential_search | Ha | O(log i) | O(1) |
jump_search | Ha | O(√n) | O(1) |
interpolation_search | Ha (tekis taqsimlangan) | O(log log n) / O(n) | O(1) |
ternary_search_max | Unimodal funksiya | O(log n) | O(1) |
§Qaysi birini tanlash?
Ma'lumot tartiblanganmi?
├── Yo'q → linear_search (yoki avval sort qiling: n log n + log n)
└── Ha → binary_search (99% hollarda to'g'ri javob)
├── chegara kerakmi (>=x, >x)? → lower_bound / upper_bound
├── massiv juda katta/cheksizmi? → exponential_search
└── qiymatlar tekis taqsimlanganmi? → interpolation_searchFunctions§
- binary_
search - Tartiblangan slicedan
targetni topadi va indeksini qaytaradi. - binary_
search_ answer - Javob ustidan binary search — olimpiada va real hayotdagi eng kuchli usul.
- binary_
search_ recursive - Binary search ning rekursiv ko’rinishi — o’quv maqsadida.
- exponential_
search - Exponential search — avval oraliqni 1, 2, 4, 8… deb kengaytirib topadi, so’ng shu oraliqda binary search qiladi.
- interpolation_
search - Interpolation search — qiymatlar tekis taqsimlangan bo’lsa binary searchdan tez.
- jump_
search - Jump search — tartiblangan massivda √n qadamlab “sakrab” qidirish.
- linear_
search - Slice bo’ylab boshidan oxirigacha yurib,
targetning birinchi indeksini qaytaradi. - linear_
search_ all targetuchraydigan barcha indekslarni qaytaradi.- linear_
search_ by - Shart (predikat) bo’yicha qidiradi: shartni qanoatlantirgan birinchi indeks.
- lower_
bound - Birinchi
>= targetelementning indeksi (C++ dagilower_bound). - ternary_
search_ max - Ternary search — unimodal (avval o’sib, keyin kamayadigan) funksiya maksimumi.
- upper_
bound - Birinchi
> targetelementning indeksi (C++ dagiupper_bound).