Back to Javascript Algorithms

Algoritme dan Struktur Data Javascript

README.id-ID.md

latest23.9 KB
Original Source

Algoritme dan Struktur Data Javascript

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, Uzbek עברית

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.

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 OKomputasi untuk 10 elemenKomputasi untuk 100 elemenKomputasi untuk 1000 elemen
O(1)111
O(log N)369
O(N)101001000
O(N log N)306009000
O(N^2)100100001000000
O(2^N)10241.26e+291.07e+301
O(N!)36288009.3e+1574.02e+2567

Kompleksitas Operasi Struktur Data

Struktur DataAksesPencarianPenyisipanPenghapusanKeterangan
Array (Larik)1nnn
Stack (Tumpukan)nn11
Queue (Antrean)nn11
Linked List (Senarai Berantai)nn1n
Hash Table-nnnApabila fungsi hash sempurna, biayanya akan menjadi O(1)
Binary Search Tree (Pohon Telusur Biner)nnnnApabila pohon seimbang, biayanya akan menjadi O(log(n))
B-Treelog(n)log(n)log(n)log(n)
Red-Black Tree (Pohon Merah-Hitam)log(n)log(n)log(n)log(n)
AVL Treelog(n)log(n)log(n)log(n)
Bloom Filter-11-Positif palsu dimungkinkan saat pencarian

Kompleksitas Algoritma Sortir Larik

NamaTerbaikRata-rataTerburukMemoriStabilKeterangan
Bubble sort (Sortir Gelembung)nn<sup>2</sup>n<sup>2</sup>1Ya
Insertion sort (Sortir Sisipan)nn<sup>2</sup>n<sup>2</sup>1Ya
Selection sort (Sortir Seleksi)n<sup>2</sup>n<sup>2</sup>n<sup>2</sup>1Tidak
Heap sort (Sortir Heap)n log(n)n log(n)n log(n)1Tidak
Merge Sort (Sortir Gabungan)n log(n)n log(n)n log(n)nYa
Quick sort (Sortir Cepat)n log(n)n log(n)n<sup>2</sup>log(n)TidakSortir Cepat biasanya dilakukan secara in-place dengan O(log(n)) ruang tumpukan
Shell sort (Sortir Shell)n log(n)tergantung pada jarak urutann (log(n))<sup>2</sup>1Tidak
Counting sort (Sortir Perhitungan)n + rn + rn + rn + rYar - angka terbesar dalam larik
Radix sort (Sortir Akar)n * kn * kn * kn + kYak - 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