Skip to content

IkuzaDev/Algoritm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Belajar Algoritma dengan Node.js

Repository ini berisi implementasi berbagai algoritma menggunakan Node.js.

Daftar Algoritma

Sorting Numerik

  • 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

Sorting Graph

Cara Menjalankan

  1. Pastikan Node.js sudah terinstall di sistem anda
  2. Buka terminal/command prompt
  3. Masuk ke direktori algoritma yang ingin dijalankan cd sorting - DAG atau cd sorting numeric
  4. Jalankan dengan perintah:
    node namafile.js

Penjelasan Algoritma

Bubble Sort

  • 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

Selection Sort

  • 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

Insertion Sort

  • 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

Merge Sort

  • Kompleksitas: O(n log n)
  • Cara Kerja: Membagi array, mengurutkan, dan menggabungkan kembali
  • Kelebihan: Stabil dan konsisten
  • Kekurangan: Membutuhkan memori tambahan

Quick Sort

  • 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

Topological Sort

  • 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

Cycle Detection

  • 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

Colored DFS

  • 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

Tarjan SCC

  • Kompleksitas: O(V + E)
  • Cara Kerja: Menggunakan DFS dengan indeks dan lowlink values
  • Kelebihan: Single pass algorithm, efisien
  • Kekurangan: Kompleks untuk diimplementasi

Kosaraju SCC

  • Kompleksitas: O(V + E)
  • Cara Kerja: Menggunakan dua pass DFS dengan graph reversal
  • Kelebihan: Mudah dimengerti dan diimplementasi
  • Kekurangan: Membutuhkan dua pass melalui graph

Kontribusi

Silakan berkontribusi dengan menambahkan algoritma baru atau memperbaiki implementasi yang ada melalui pull request.

About

Belajar algoritma dan implamentasi pada nodejs

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors