Skip to content

Latest commit

 

History

History
309 lines (261 loc) · 23.9 KB

README.id-ID.md

File metadata and controls

309 lines (261 loc) · 23.9 KB

Algoritme dan Struktur Data Javascript

CI codecov

Repositori ini berisi contoh-contoh algoritme dan struktur data yang populer menggunakan JavaScript.

Setiap algoritma dan struktur data memiliki README-nya tersendiri dengan penjelasan yang berkaitan dan tautan untuk bacaan lebih lanjut (termasuk tautan menuju video YouTube).

Baca ini dalam bahasa yang lain: English, 简体中文, 繁體中文, 한국어, 日本語, Polski, Français, Español, Português, Русский, Türk, Italiana, Українська, Arabic, Tiếng Việt, Deutsch

☝ Perhatikan bahwa proyek ini hanya dimaksudkan untuk tujuan pembelajaran dan riset, dan tidak dimaksudkan untuk digunakan sebagai produksi.

Struktur Data

Struktur data adalah cara tertentu untuk mengatur dan menyimpan data dalam komputer sehingga dapat diakses dan diubah secara efisien. Lebih tepatnya, struktur data adalah kumpulan dari nilai data, relasi di antara data-data, dan fungsi atau operasi yang dapat diterapkan pada data.

P - Pemula, L - Lanjutan

Algoritma

Algoritma adalah sebuah perincian yang jelas tentang cara untuk memecahkan suatu masalah. Ia adalah sekumpulan aturan yang menjelaskan secara tepat urutan-urutan dari sebuah operasi.

P - Pemula, L - Lanjutan

Algoritma Berdasarkanan Topik

Algoritma Berdasarkan Paradigma

Paradigma algoritmik adalah sebuah metode atau pendekatan umum yang mendasari desain sebuah tingkatan algoritma. Paradigma algoritmik merupakan abstraksi yang lebih tinggi dari gagasan sebuah algoritma, seperti halnya sebuah algoritma merupakan abstraksi yang lebih tinggi dari sebuah program komputer.

Cara menggunakan repositori ini

Meng-install semua dependensi

npm install

Menjalankan ESLint

Anda dapat menjalankannya untuk memeriksa kualitas kode.

npm run lint

Menjalankan semua tes

npm test

Menjalankan tes berdasarkan nama

npm test -- 'LinkedList'

Playground

Anda dapat bermain dengan algoritma dan struktur data di file ./src/playground/playground.js dan menuliskan tesnya di ./src/playground/__test__/playground.test.js.

Lalu, hanya tinggal menjalankan perintah berikut untuk mengetes apakah kode playground anda bekerja sesuai dengan keinginan:

npm test -- 'playground'

Informasi Bermanfaat

Referensi

▶ Algoritma dan Struktur Data di YouTube

Notasi Big O

Notasi Big O digunakan untuk mengklasifikasikan algoritma berdasarkan durasi atau ruang yang dibutuhkan seiring bertambahnya input. Pada grafik dibawah, anda dapat menemukan urutan pertumbuhan yang paling umum dari algoritma yang ditentukan dalam notasi Big O.

Big O graphs

Sumber: Big O Cheat Sheet.

Di bawah ini adalah daftar dari beberapa notasi Big O yang sering digunakan dan perbandingan kinerjanya terhadap berbagai ukuran input data.

Notasi Big O Komputasi untuk 10 elemen Komputasi untuk 100 elemen Komputasi untuk 1000 elemen
O(1) 1 1 1
O(log N) 3 6 9
O(N) 10 100 1000
O(N log N) 30 600 9000
O(N^2) 100 10000 1000000
O(2^N) 1024 1.26e+29 1.07e+301
O(N!) 3628800 9.3e+157 4.02e+2567

Kompleksitas Operasi Struktur Data

Struktur Data Akses Pencarian Penyisipan Penghapusan Keterangan
Array (Larik) 1 n n n
Stack (Tumpukan) n n 1 1
Queue (Antrean) n n 1 1
Linked List (Senarai Berantai) n n 1 n
Hash Table - n n n Apabila fungsi hash sempurna, biayanya akan menjadi O(1)
Binary Search Tree (Pohon Telusur Biner) n n n n Apabila pohon seimbang, biayanya akan menjadi O(log(n))
B-Tree log(n) log(n) log(n) log(n)
Red-Black Tree (Pohon Merah-Hitam) log(n) log(n) log(n) log(n)
AVL Tree log(n) log(n) log(n) log(n)
Bloom Filter - 1 1 - Positif palsu dimungkinkan saat pencarian

Kompleksitas Algoritma Sortir Larik

Nama Terbaik Rata-rata Terburuk Memori Stabil Keterangan
Bubble sort (Sortir Gelembung) n n2 n2 1 Ya
Insertion sort (Sortir Sisipan) n n2 n2 1 Ya
Selection sort (Sortir Seleksi) n2 n2 n2 1 Tidak
Heap sort (Sortir Heap) n log(n) n log(n) n log(n) 1 Tidak
Merge Sort (Sortir Gabungan) n log(n) n log(n) n log(n) n Ya
Quick sort (Sortir Cepat) n log(n) n log(n) n2 log(n) Tidak Sortir Cepat biasanya dilakukan secara in-place dengan O(log(n)) ruang tumpukan
Shell sort (Sortir Shell) n log(n) tergantung pada jarak urutan n (log(n))2 1 Tidak
Counting sort (Sortir Perhitungan) n + r n + r n + r n + r Ya r - angka terbesar dalam larik
Radix sort (Sortir Akar) n * k n * k n * k n + k Ya k - panjang dari kunci terpanjang

Pendukung Proyek

Anda dapat mendukung proyek ini via ❤️️ GitHub atau ❤️️ Patreon.

Orang-orang yang mendukung proyek ini ∑ = 1

ℹ️ A few more projects and articles about JavaScript and algorithms on trekhleb.dev