Repository ini berisi implementasi berbagai algoritma menggunakan Node.js.
- Bubble Sort
Algoritma pengurutan sederhana dengan membandingkan dan menukar elemen bersebelahan
- Selection Sort
Algoritma pengurutan dengan mencari nilai minimum pada setiap iterasi
- Insertion Sort
Algoritma pengurutan dengan menyisipkan elemen ke posisi yang tepat
- Merge Sort
Algoritma pengurutan dengan metode divide and conquer
- Quick Sort
Algoritma pengurutan cepat dengan metode pivot dan partisi
- Topological Sort
Algoritma pengurutan untuk Directed Acyclic Graph (DAG)
- DFS Topological Sort
Implementasi Topological Sort dengan DFS
- Cycle Detection
Deteksi siklus dalam graph
- Colored DFS
Implementasi DFS dengan pewarnaan node
- Tarjan SCC
Implementasi Tarjan untuk Strongly Connected Components
- Kosaraju SCC
Implementasi Kosaraju untuk Strongly Connected Components
- Pastikan Node.js sudah terinstall di sistem anda
- Buka terminal/command prompt
- Masuk ke direktori algoritma yang ingin dijalankan
cd sorting - DAGataucd sorting numeric - Jalankan dengan perintah:
node namafile.js
- Kompleksitas: O(n²)
- Cara Kerja: Membandingkan dua elemen bersebelahan dan menukarnya jika urutannya salah
- Kelebihan: Sederhana dan mudah diimplementasikan
- Kekurangan: Tidak efisien untuk data besar
- Kompleksitas: O(n²)
- Cara Kerja: Mencari elemen minimum dan menempatkannya di posisi yang tepat
- Kelebihan: Jumlah penukaran lebih sedikit dibanding bubble sort
- Kekurangan: Tidak efisien untuk data besar
- Kompleksitas: O(n²)
- Cara Kerja: Membangun array terurut secara bertahap dengan menyisipkan elemen
- Kelebihan: Efisien untuk dataset kecil dan hampir terurut
- Kekurangan: Tidak efisien untuk data besar
- Kompleksitas: O(n log n)
- Cara Kerja: Membagi array, mengurutkan, dan menggabungkan kembali
- Kelebihan: Stabil dan konsisten
- Kekurangan: Membutuhkan memori tambahan
- Kompleksitas: O(n log n) rata-rata, O(n²) worst case
- Cara Kerja: Menggunakan pivot untuk mempartisi dan mengurutkan
- Kelebihan: Sangat efisien untuk dataset besar
- Kekurangan: Worst case performance buruk
- Kompleksitas: O(V + E)
- Cara Kerja: Mengurutkan vertex dalam DAG sehingga edge mengarah ke depan
- Kelebihan: Ideal untuk dependency resolution
- Kekurangan: Hanya bekerja pada DAG
- Kompleksitas: O(V + E)
- Cara Kerja: Menggunakan DFS dengan recursion stack untuk mendeteksi siklus
- Kelebihan: Dapat mendeteksi siklus dalam graph
- Kekurangan: Membutuhkan tambahan memori untuk recursion stack
- Kompleksitas: O(V + E)
- Cara Kerja: Menggunakan 3 warna untuk melacak status node
- Kelebihan: Dapat mendeteksi siklus dan melakukan topological sort
- Kekurangan: Memerlukan space tambahan untuk tracking warna
- Kompleksitas: O(V + E)
- Cara Kerja: Menggunakan DFS dengan indeks dan lowlink values
- Kelebihan: Single pass algorithm, efisien
- Kekurangan: Kompleks untuk diimplementasi
- Kompleksitas: O(V + E)
- Cara Kerja: Menggunakan dua pass DFS dengan graph reversal
- Kelebihan: Mudah dimengerti dan diimplementasi
- Kekurangan: Membutuhkan dua pass melalui graph
Silakan berkontribusi dengan menambahkan algoritma baru atau memperbaiki implementasi yang ada melalui pull request.