1 Star 0 Fork 76

yuxianjie1995 / javascript-algorithms

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.id-ID.md 23.69 KB
一键复制 编辑 原始数据 按行查看 历史
Oleksii Trekhleb 提交于 2021-01-03 10:34 . Add Arabic translation.

Algoritme dan Struktur Data Javascript

CI codecov

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

Setiap algoritme 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

☝ 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

Algoritme

Algoritme 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

Algoritme Berdasarkanan Topik

Algoritme Berdasarkan Paradigma

Paradigma algoritmik adalah sebuah metode atau pendekatan umum yang mendasari desain sebuah tingkatan algoritme. Paradigma algoritmik merupakan abstraksi yang lebih tinggi dari gagasan sebuah algoritme, seperti halnya sebuah algoritme 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 algoritme 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

▶ Algoritme dan Struktur Data di YouTube

Notasi Big O

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

Big O graphs

Sumber: Big O Cheat Sheet.

Di bawah ini adalah daftar dari beberapa notasi Bog 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 Algoritme 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

JavaScript
1
https://gitee.com/yuxianjie1995/javascript-algorithms.git
git@gitee.com:yuxianjie1995/javascript-algorithms.git
yuxianjie1995
javascript-algorithms
javascript-algorithms
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891