Bu — o'qib tushuniladigan va ishga tushiriladigan DSA darsligi. Har bir mavzu uch qismdan iborat:
📄 Darslik → g'oya · animatsiyali diagramma · complexity · xatolar · quiz
🦀 Kod → ishlaydigan, izohlangan, testlangan Rust implementatsiya
🎬 Demo → cargo run bilan natijani o'z ko'zingiz bilan ko'ring
| 📚 11 ta darslik | O'zbek tilida, texnik atamalar inglizcha |
| 🎨 64 ta diagramma | Qo'lda chizilgan SVG, 33 tasi animatsiyali |
| 🌗 Light / dark | Diagrammalar GitHub temangizga moslashadi |
| 🦀 50+ algoritm | Rustda, batafsil izohlar bilan |
| ✅ 303 ta test | Har algoritm sinovdan o'tgan |
| 🎬 5 ta demo | Terminalda jonli ishlaydi |
| 📦 0 ta dependency | Hamma narsa noldan, "sehrsiz" |
git clone https://github.com/ismoilovdevml/rust-algorithms.git
cd rust-algorithms
cargo test # 303 ta test
cargo run --release --example 01_big_o # Big O — jonli o'lchov
cargo run --release --example 02_sorting_race # sorting poygasi
cargo run --example 03_data_structures # strukturalar demosi
cargo run --example 04_graph_navigator # O'zbekiston bo'ylab Dijkstra
cargo run --release --example 05_dp_vs_greedy # DP vs greedy
cargo doc --open # API hujjatlari (lokal)📖 Hujjatlar onlayn: ismoilovdevml.github.io/rust-algorithms — har bir funksiya, misol va complexity izohi bilan. Har
mainpush'da avtomatik yangilanadi.
Kutubxona sifatida:
use rust_algorithms::sorting::quick_sort;
use rust_algorithms::searching::binary_search;
let mut v = vec![5, 3, 9, 1, 7];
quick_sort(&mut v);
assert_eq!(binary_search(&v, &7), Some(3));| # | Mavzu | Nimani o'rganasiz |
|---|---|---|
| 1 | 📈 Big O Notation | Complexity tili, 5 ta hisoblash qoidasi, amortized analysis |
| 2 | 🔢 Numbers | GCD, primes, sieve, modular arithmetic, bit manipulation |
| 3 | 🔍 Searching | Linear, binary (+3 variant), jump, interpolation, exponential |
| └─ Linear Search · Binary Search | ||
| 4 | 🔀 Sorting | 10 ta algoritm, stability, Ω(n log n) chegarasi va uni aylanib o'tish |
| 5 | 🧱 Data Structures | Stack, Queue, Heap, HashTable, DisjointSet |
| 6 | 🔗 Linked List | Box, Rc<RefCell>, Weak — Rustda nega qiyin |
| 7 | 🌳 Trees | Traversal, BST, AVL rotation, Trie |
| 8 | 🕸️ Graphs | BFS, DFS, Dijkstra, Bellman-Ford, topological sort, MST |
| 9 | 💰 Greedy | Qachon ishlaydi, qachon xato qiladi, Huffman coding |
| 10 | 🧠 Dynamic Programming | 5 qadamli retsept, knapsack, LCS, LIS, Kadane |
| 11 | 🧩 Other Algorithms | Recursion, backtracking, two pointers, sliding window, KMP |
Sorting
| Algoritm | Best | Average | Worst | Space | Stable |
|---|---|---|---|---|---|
| Bubble | O(n) | O(n²) | O(n²) | O(1) | ✅ |
| Selection | O(n²) | O(n²) | O(n²) | O(1) | ❌ |
| Insertion | O(n) | O(n²) | O(n²) | O(1) | ✅ |
| Shell | O(n log n) | ~O(n^1.3) | O(n²) | O(1) | ❌ |
| Merge | O(n log n) | O(n log n) | O(n log n) | O(n) | ✅ |
| Quick | O(n log n) | O(n log n) | O(n²) | O(log n) | ❌ |
| Heap | O(n log n) | O(n log n) | O(n log n) | O(1) | ❌ |
| Counting | O(n+k) | O(n+k) | O(n+k) | O(n+k) | ✅ |
| Radix | O(d(n+b)) | O(d(n+b)) | O(d(n+b)) | O(n+b) | ✅ |
Data structures
| Struktura | Insert | Delete | Search | Min/Max |
|---|---|---|---|---|
Vec |
O(1)* | O(n) | O(n) | O(n) |
| Stack / Queue | O(1) | O(1) | O(n) | O(n) |
| MinHeap | O(log n) | O(log n) | O(n) | O(1) |
| HashTable | O(1)** | O(1)** | O(1)** | O(n) |
| BST (balanced) | O(log n) | O(log n) | O(log n) | O(log n) |
| BST (skewed) | O(n) | O(n) | O(n) | O(n) |
| Trie | O(m) | O(m) | O(m) | — |
| DisjointSet | — | — | ~O(1) | — |
* amortized ** average
Graph algoritmlari
| Algoritm | Complexity | Qachon |
|---|---|---|
| BFS / DFS | O(V + E) | Traversal, connectivity |
| Dijkstra | O((V+E) log V) | Musbat weight'lar |
| Bellman-Ford | O(V·E) | Manfiy weight bor |
| Floyd-Warshall | O(V³) | Barcha juftliklar |
| Topological sort | O(V + E) | Dependency tartibi |
| Kruskal / Prim | O(E log E) | Minimum spanning tree |
"1 soniyada nechta element?"
| Complexity | Maksimal n |
|---|---|
| O(log n) | cheksiz |
| O(n) | ~10⁸ |
| O(n log n) | ~5·10⁶ |
| O(n²) | ~10⁴ |
| O(2ⁿ) | ~25 |
| O(n!) | ~11 |
rust-algorithms/
│
├── 01-big-o/ 📄 darsliklar (har birida README.md)
├── 02-numbers/
├── 03-searching/ + linear-search.md, binary-search.md
├── 04-sorting/
├── 05-data-structures/
├── 06-linked-list/
├── 07-trees/
├── 08-graphs/
├── 09-greedy/
├── 10-dynamic-programming/
├── 11-other-algorithms/
│
├── src/ 🦀 kutubxona
│ ├── lib.rs kirish nuqtasi
│ ├── util.rs Rng, measure (dependency-siz)
│ ├── searching/ linear · binary · jump · interpolation
│ ├── sorting/ quadratic · efficient · linear_time
│ ├── numbers/ arithmetic · primes · bits
│ ├── data_structures/ stack · queue · heap · hash_table · disjoint_set
│ ├── linked_list/ singly (Box) · doubly (Rc/RefCell/Weak)
│ ├── tree/ binary_tree · bst · avl · trie
│ ├── graph/ core · traversal · shortest_path · mst
│ ├── greedy/ classic · huffman
│ ├── dp/ classic · sequences
│ └── other/ recursion · backtracking · two_pointers
│ sliding_window · strings
│
├── docs/index.html 📖 Pages uchun kirish sahifasi
├── examples/ 🎬 5 ta ishga tushiriladigan demo
├── assets/diagrams/ 🎨 64 ta SVG (33 tasi animatsiyali)
└── .github/workflows/ci.yml ⚙️ 3 OS × test + clippy + fmt + doc → Pages
Konvensiyalar:
- Har darslik papkasida
README.md— GitHub uni papkani ochganda avtomatik ko'rsatadi; - Kod
src/da, darslik matnidan alohida — bitta manba, ikki joyda takrorlanmaydi; - Diagrammalar
assets/diagrams/da:anim-*.svg— animatsiyali, qolgani statik.
Har bir algoritm quyidagilar bilan sinovdan o'tgan:
- Unit testlar — chegaraviy holatlar (bo'sh, bitta element, takrorlar, teskari tartib);
- Doc-testlar — hujjatdagi har bir misol
cargo testda ishlaydi; - Property testlar —
stdyoki brute-force bilan solishtirish; - Deterministik random testlar — o'z
Rngimiz bilan (qayta takrorlanadi).
cargo test # hammasi (180 unit + 123 doc)
cargo test sorting # faqat bitta modul
cargo clippy --all-targets # lintlar (ogohlantirishsiz)
cargo fmt --check # formatlashHar main push'da CI 3 ta OS'da (Linux, macOS, Windows) shu tekshiruvlarni
bajaradi va hujjatlarni GitHub Pages
ga chiqaradi.
Kursni tugatdingizmi?
- Mashq qiling — har darsning oxiridagi vazifalarni bajaring;
- Platformalar: LeetCode · Codeforces · Exercism Rust track;
- Chuqurlashtiring: segment tree · Fenwick tree · suffix array · max flow · string hashing · bitmask DP · persistent data structures;
- Hissa qo'shing — pastga qarang 👇
Xato topsangiz, darslikni yaxshilamoqchi bo'lsangiz yoki yangi algoritm qo'shmoqchi bo'lsangiz — marhamat!
Batafsil: CONTRIBUTING.md
cargo test && cargo clippy --all-targets && cargo fmt --checkShu uchtasi yashil bo'lsa — pull request tashlang 😉
Foydali bo'ldimi? ⭐ qo'yib qo'ying — boshqalar ham topadi.
Muallif: @ismoilovdevml