Skip to main content

rust_algorithms/searching/
mod.rs

1//! # Qidiruv algoritmlari (Searching)
2//!
3//! Darslik: `03-searching/`
4//!
5//! | Algoritm | Ma'lumot tartiblanganmi? | Time (o'rtacha/eng yomon) | Space |
6//! |---|---|---|---|
7//! | [`linear_search`] | Yo'q | O(n) / O(n) | O(1) |
8//! | [`binary_search`] | **Ha** | O(log n) / O(log n) | O(1) |
9//! | [`lower_bound`] / [`upper_bound`] | **Ha** | O(log n) | O(1) |
10//! | [`exponential_search`] | **Ha** | O(log i) | O(1) |
11//! | [`jump_search`] | **Ha** | O(√n) | O(1) |
12//! | [`interpolation_search`] | **Ha** (tekis taqsimlangan) | O(log log n) / O(n) | O(1) |
13//! | [`ternary_search_max`] | Unimodal funksiya | O(log n) | O(1) |
14//!
15//! ## Qaysi birini tanlash?
16//!
17//! ```text
18//! Ma'lumot tartiblanganmi?
19//!  ├── Yo'q  → linear_search  (yoki avval sort qiling: n log n + log n)
20//!  └── Ha    → binary_search  (99% hollarda to'g'ri javob)
21//!               ├── chegara kerakmi (>=x, >x)? → lower_bound / upper_bound
22//!               ├── massiv juda katta/cheksizmi? → exponential_search
23//!               └── qiymatlar tekis taqsimlanganmi? → interpolation_search
24//! ```
25
26mod advanced;
27mod binary;
28mod linear;
29
30pub use advanced::{exponential_search, interpolation_search, jump_search, ternary_search_max};
31pub use binary::{
32    binary_search, binary_search_answer, binary_search_recursive, lower_bound, upper_bound,
33};
34pub use linear::{linear_search, linear_search_all, linear_search_by};