Skip to content

Repository files navigation

rust-algorithms logo

Data Structures & Algorithms — Rustda

O'zbek tilidagi to'liq DSA darsligi: animatsiyali diagrammalar + ishlaydigan kod + testlar

Rust Algorithms — DSA o'zbek tilida

Rust Tests Diagrams Dependencies License Docs


📖 Bu loyiha nima?

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"

🚀 Tez boshlash

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 main push'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));

🗺️ O'rganish yo'l xaritasi

O'rganish yo'l xaritasi


📚 Darsliklar

# 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

⚡ Complexity shpargalkasi

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

🗂️ Loyiha strukturasi

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.

✅ Testlar

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 test da ishlaydi;
  • Property testlarstd yoki brute-force bilan solishtirish;
  • Deterministik random testlar — o'z Rng imiz 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             # formatlash

Har main push'da CI 3 ta OS'da (Linux, macOS, Windows) shu tekshiruvlarni bajaradi va hujjatlarni GitHub Pages ga chiqaradi.


🎯 Keyingi qadamlar

Kursni tugatdingizmi?

  1. Mashq qiling — har darsning oxiridagi vazifalarni bajaring;
  2. Platformalar: LeetCode · Codeforces · Exercism Rust track;
  3. Chuqurlashtiring: segment tree · Fenwick tree · suffix array · max flow · string hashing · bitmask DP · persistent data structures;
  4. Hissa qo'shing — pastga qarang 👇

🤝 Hissa qo'shish

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 --check

Shu uchtasi yashil bo'lsa — pull request tashlang 😉


📜 Litsenziya

GPL-3.0


Foydali bo'ldimi? ⭐ qo'yib qo'ying — boshqalar ham topadi.

Muallif: @ismoilovdevml

Releases

Packages

Contributors

Languages