Skip to content

File tree

1 file changed

+364
-0
lines changed

1 file changed

+364
-0
lines changed
 

‎README.ma-MA.md

+364
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
# Algoritma JavaScript dan Struktur Data
2+
3+
> 🇺🇦 UKRAINE [SEDANG DISERANG](https://twitter.com/MFA_Ukraine) OLEH TENTERA RUSIA. ORANG AWAM SEMAKIN DIBUNUH. KAWASAN KEDIAMAN SEMAKIN DIBOM.
4+
> - Bantu Ukraine melalui [Bank Negara Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi)
5+
> - Bantu Ukraine melalui dana [SaveLife](https://savelife.in.ua/en/donate-en/)
6+
> - Maklumat lanjut tentang [war.ukraine.ua](https://war.ukraine.ua/)
7+
8+
[![CI](https://github.com/trekhleb/javascript-algorithms/workflows/CI/badge.svg)](https://github.com/trekhleb/javascript-algorithms/actions?query=workflow% 3ACI+cawangan%3Amaster)
9+
[![codecov](https://codecov.io/gh/trekhleb/javascript-algorithms/branch/master/graph/badge.svg)](https://codecov.io/gh/trekhleb/javascript-algorithms)
10+
11+
Repositori ini mengandungi banyak contoh berasaskan JavaScript
12+
algoritma dan struktur data yang popular.
13+
14+
Setiap algoritma dan struktur data mempunyai README tersendiri
15+
dengan penjelasan dan pautan berkaitan untuk bacaan lanjut (termasuk yang
16+
kepada video YouTube).
17+
18+
_Baca ini dalam bahasa lain:_
19+
[_简体中文_](README.zh-CN.md),
20+
[_繁體中文_](README.zh-TW.md),
21+
[_한국어_](README.ko-KR.md),
22+
[_日本語_](README.ja-JP.md),
23+
[_Polski_](README.pl-PL.md),
24+
[_Français_](README.fr-FR.md),
25+
[_Español_](README.es-ES.md),
26+
[_Português_](README.pt-BR.md),
27+
[_Русский_](README.ru-RU.md),
28+
[_Türk_](README.tr-TR.md),
29+
[_Italiana_](README.it-IT.md),
30+
[_Bahasa Indonesia_](README.id-ID.md),
31+
[_Українська_](README.uk-UA.md),
32+
[_Arab_](README.ar-AR.md),
33+
[_Tiếng Việt_](README.vi-VN.md),
34+
[_Deutsch_](README.de-DE.md)
35+
36+
*☝ Ambil perhatian bahawa projek ini bertujuan untuk digunakan untuk tujuan pembelajaran dan penyelidikan
37+
sahaja, dan ia **tidak** bertujuan untuk digunakan untuk pengeluaran.*
38+
39+
## Struktur Data
40+
41+
Struktur data ialah cara tertentu untuk mengatur dan menyimpan data dalam komputer supaya ia boleh
42+
boleh diakses dan diubah suai dengan cekap. Lebih tepat lagi, struktur data ialah himpunan data
43+
nilai, hubungan di antara mereka, dan fungsi atau operasi yang boleh digunakan
44+
data itu.
45+
46+
`B` - Pemula, `A` - Lanjutan
47+
48+
* `B` [Senarai Terpaut](src/struktur-data/senarai-terpaut)
49+
* `B` [Senarai Terpaut Berganda](src/struktur-data/senarai-berpaut-dua)
50+
* `B` [Barisan](src/struktur-data/baris gilir)
51+
* `B` [Timbunan](src/struktur-data/tindanan)
52+
* `B` [Jadual Hash](src/struktur-data/jadual cincang)
53+
* `B` [Timbunan](src/struktur-data/timbunan) - versi timbunan maks dan min
54+
* `B` [Baris Keutamaan](src/struktur-data/baris gilir keutamaan)
55+
* `A` [Trie](src/data-structures/trie)
56+
* `A` [Pokok](src/struktur-data/pokok)
57+
* `A` [Pokok Carian Perduaan](src/struktur-data/pokok/pokok-cari-perduaan)
58+
* `A` [AVL Tree](src/data-structures/tree/avl-tree)
59+
* `A` [Pokok Merah-Hitam](src/struktur-data/pokok/pokok-merah-hitam)
60+
* `A` [Pokok Segmen](src/data-structures/tree/segment-tree) - dengan contoh pertanyaan julat min/maks/jumlah
61+
* `A` [Pokok Fenwick](src/struktur-data/pokok/pokok-fenwick) (Pokok Berindeks Perduaan)
62+
* `A` [Graf](src/struktur-data/graf) (kedua-dua terarah dan tidak terarah)
63+
* `A` [Set Terpisah](src/struktur-data/set-terpisah)
64+
* `A` [Bloom Filter](src/data-structures/bloom-filter)
65+
66+
## Algoritma
67+
68+
Algoritma ialah spesifikasi yang tidak jelas tentang cara menyelesaikan kelas masalah. Ia adalah
69+
satu set peraturan yang mentakrifkan dengan tepat urutan operasi.
70+
71+
`B` - Pemula, `A` - Lanjutan
72+
73+
### Algoritma mengikut Topik
74+
75+
* **Matematik**
76+
* `B` [Manipulasi Bit](src/algoritma/matematik/bit) - set/dapatkan/kemas kini/kosongkan bit, darab/bahagi dengan dua, jadikan negatif dsb.
77+
* `B` [Titik Terapung Perduaan](src/algoritma/matematik/titik terapung binari) - perwakilan binari nombor titik terapung.
78+
* `B` [Factorial](src/algoritma/matematik/faktorial)
79+
* `B` [Nombor Fibonacci](src/algoritma/matematik/fibonacci) - versi klasik dan bentuk tertutup
80+
* `B` [Faktor Perdana](src/algoritma/matematik/faktor-prima) - mencari faktor perdana dan mengiranya menggunakan teorem Hardy-Ramanujan
81+
* `B` [Ujian Primaliti](src/algoritma/matematik/ujian-primaliti) (kaedah pembahagian percubaan)
82+
* `B` [Algoritma Euclidean](src/algorithm/math/euclidean-algorithm) - kira Pembahagi Sepunya Terhebat (GCD)
83+
* `B` [Garab Sepunya Terkecil](src/algoritma/matematik/bilangan-paling-biasa) (LCM)
84+
* `B` [Ayak Eratosthenes](src/algoritma/matematik/ayak-eratosthenes) - mencari semua nombor perdana sehingga mana-mana had tertentu
85+
* `B` [Adalah Kuasa Dua](src/algoritma/math/is-power-of-two) - semak sama ada nombor itu kuasa dua (algoritma naif dan bitwise)
86+
* `B` [Segitiga Pascal](src/algoritma/matematik/segitiga-pascal)
87+
* `B` [Nombor Kompleks](src/algoritma/matematik/nombor-kompleks) - nombor kompleks dan operasi asas dengannya
88+
* `B` [Radian & Darjah](src/algoritma/matematik/radian) - penukaran radian kepada darjah dan ke belakang
89+
* `B` [Fast Powering](src/algorithm/math/fast-powering)
90+
* `B` [Kaedah Horner](src/algoritma/matematik/kaedah-horner) - penilaian polinomial
91+
* `B` [Matriks](src/algoritma/matematik/matriks) - matriks dan operasi matriks asas (pendaraban, transposisi, dsb.)
92+
* `B` [Jarak Euclidean](src/algoritma/matematik/jarak-euclidean) - jarak antara dua titik/vektor/matriks
93+
* `A` [Pembahagian Integer](src/algoritma/matematik/integer-partition)
94+
* `A` [Akar Kuasa Dua](src/algoritma/matematik/akar-kuadrat) - Kaedah Newton
95+
* `A` [Algoritma Liu Hui π](src/algoritma/math/liu-hui) - anggaran π pengiraan berdasarkan N-gons
96+
* `A` [Transformasi Fourier Diskret](src/algoritma/matematik/fourier-transform) - menguraikan fungsi masa (suatu isyarat) kepada frekuensi yang membentuknya
97+
* **Set**
98+
* `B` [Produk Cartesian](src/algoritma/set/produk cartesian) - hasil daripada berbilang set
99+
* `B` [Fisher–Yates Shuffle](src/algoritma/sets/fisher-yates) - pilih atur rawak bagi urutan terhingga
100+
* `A` [Set Kuasa](src/algoritma/set/set-kuasa) - semua subset set (penyelesaian bitwise dan backtracking)
101+
* `A` [Permutasi](src/algoritma/set/permutasi) (dengan dan tanpa ulangan)
102+
* `A` [Gabungan](src/algoritma/set/gabungan) (dengan dan tanpa ulangan)
103+
* `A` [Turutan Sepunya Terpanjang](src/algoritma/set/susulan-biasa-terpanjang) (LCS)
104+
* `A` [Surutan Bertambah Terpanjang](src/algoritma/set/susulan-bertambah-panjang)
105+
* `A` [Jurutan Sepunya Terpendek](src/algoritma/set/jujukan-sepunya-terpendek) (SCS)
106+
* `A` [Masalah Knapsack](src/algorithms/sets/knapsack-problem) - "0/1" dan "Unbound"
107+
* `A` [Maximum Subarray](src/algorithm/sets/maximum-subarray) - versi "Brute Force" dan "Dynamic Programming" (Kadane's)
108+
* `A` [Jumlah Gabungan](src/algoritma/set/jumlah-gabungan) - cari semua gabungan yang membentuk jumlah tertentu
109+
* **Rentetan**
110+
* `B` [Jarak Hamming](src/algoritma/rentetan/jarak hamming) - bilangan kedudukan di mana simbol berbeza
111+
* `B` [Palindrome](src/algorithm/string/palindrome) - semak sama ada rentetan adalah sama secara terbalik
112+
* `A` [Jarak Levenshtein](src/algoritma/rentetan/levenshtein-jarak) - jarak edit minimum antara dua jujukan
113+
* `A` [Algoritma Knuth–Morris–Pratt](src/algorithm/string/knuth-morris-pratt) (Algoritma KMP) - carian subrentetan (padanan corak)
114+
* `A` [Z Algoritma](src/algorithm/string/z-algorithm) - carian subrentetan (padanan corak)
115+
* `A` [Algoritma Rabin Karp](src/algorithm/string/rabin-karp) - carian subrentetan
116+
* `A` [Subrentetan Biasa Terpanjang](src/algoritma/rentetan/subrentetan-biasa-terpanjang)
117+
* `A` [Padanan Ungkapan Biasa](src/algoritma/rentetan/padanan-ungkapan-biasa)
118+
* **Carian**
119+
* `B` [Carian Linear](src/algorithm/search/linear-search)
120+
* `B` [Cari Lompat](src/algorithm/search/jump-search) (atau Carian Sekat) - cari dalam tatasusunan yang diisih
121+
* `B` [Carian Binari](src/algorithm/search/binary-search) - cari dalam tatasusunan yang diisih
122+
* `B` [Carian Interpolasi](src/algoritma/search/interpolation-search) - cari dalam tatasusunan tersusun yang diedarkan secara seragam
123+
* **Menyusun**
124+
* `B` [Isih Buih](src/algoritma/isih/isih-buih)
125+
* `B` [Isih Pilihan](src/algoritma/isih/isih-pilihan)
126+
* `B` [Isih Sisipan](src/algoritma/isih/isihan-sisipan)
127+
* `B` [Isih Timbunan](src/algoritma/isih/isih-timbun)
128+
* `B` [Isih Gabung](src/algoritma/isih/isih-gabung)
129+
* `B` [Quicksort](src/algorithm/sorting/quick-sort) - pelaksanaan di tempat dan bukan di tempat
130+
* `B` [Shellsort](src/algoritm/sorting/shell-sort)
131+
* `B` [Isih Mengira](src/algoritma/isihan/isihan-kira)
132+
* `B` [Isih Radix](src/algoritma/isih/isih-radix)
133+
* **Senarai Terpaut**
134+
* `B` [Straight Traversal](src/algorithm/linked-list/traversal)
135+
* `B` [Reverse Traversal](src/algorithm/linked-list/reverse-traversal)
136+
* **Pokok**
137+
* `B` [Depth-First Search](src/algorithm/tree/depth-first-search) (DFS)
138+
* `B` [Breadth-First-search](src/algorithm/tree/breadth-first-search) (BFS)
139+
* **Graf**
140+
* `B` [Depth-First Search](src/algorithm/graph/depth-first-search) (DFS)
141+
* `B` [Breadth-First Search](src/algorithm/graph/breadth-first-search) (BFS)
142+
* `B` [Algoritma Kruskal](src/algoritma/graf/kruskal) - mencari Pokok Spanning Minimum (MST) untuk graf tidak berwajaran
143+
* `A` [Algoritma Dijkstra](src/algorithm/graph/dijkstra) - mencari laluan terpendek ke semua bucu graf dari bucu tunggal
144+
* `A` [Algoritma Bellman-Ford](src/algoritma/graf/bellman-ford) - mencari laluan terpendek ke semua bucu graf daripada bucu tunggal
145+
* `A` [Algoritma Floyd-Warshall](src/algorithm/graph/floyd-warshall) - cari laluan terpendek antara semua pasangan bucu
146+
* `A` [Detect Cycle](src/algorithm/graph/detect-cycle) - untuk kedua-dua graf terarah dan tidak terarah (versi berasaskan DFS dan Disjoint Set)
147+
* `A` [Algoritma Prim](src/algoritma/graf/prim) - mencari Pokok Spanning Minimum (MST) untuk graf tidak berwajaran
148+
* `A` [Isih Topologi](src/algoritma/graf/isihan-topologi) - Kaedah DFS
149+
* `A` [Mata Artikulasi](src/algoritma/graf/titik-artikulasi) - Algoritma Tarjan (berasaskan DFS)
150+
* `A` [Bridges](src/algorithm/graph/bridges) - algoritma berasaskan DFS
151+
* `A` [Eulerian Path and Eulerian Circuit](src/algorithm/graph/eulerian-path) - Algoritma Fleury - Lawati setiap tepi tepat sekali
152+
* `A` [Kitaran Hamiltonian](src/algoritma/graf/kitaran-hamilton) - Lawati setiap bucu tepat sekali
153+
* `A` [Komponen Bersambung Kuat](src/algoritma/graf/komponen-kuat-bersambung) - Algoritma Kosaraju
154+
* `A` [Masalah Jurujual Perjalanan](src/algoritma/graf/jurujual-perjalanan) - laluan terpendek mungkin yang melawati setiap bandar dan kembali ke bandar asal
155+
* **Kriptografi**
156+
* `B` [Cincangan Polinomial](src/algoritma/kriptografi/cincang polinomial) - fungsi cincang bergolek berdasarkan polinomial
157+
* `B` [Sifir Pagar Rel](src/algoritma/kriptografi/sifir-pagar-rel) - algoritma sifir transposisi untuk pengekodan mesej
158+
* `B` [Caesar Cipher](src/algoritma/kriptografi/caesar-cipher) - sifir penggantian mudah
159+
* `B` [Sifir Bukit](src/algoritma/kriptografi/sifir bukit) - sifir penggantian berdasarkan algebra linear
160+
* **Pembelajaran Mesin**
161+
* `B` [NanoNeuron](https://github.com/trekhleb/nano-neuron) - 7 fungsi JS mudah yang menggambarkan bagaimana mesin sebenarnya boleh belajar (perambatan ke hadapan/belakang)
162+
* `B` [k-NN](src/algoritma/ml/knn) - algoritma klasifikasi jiran terdekat k
163+
* `B` [k-Means](src/algorithm/ml/k-means) - algoritma pengelompokan k-Means
164+
* **Pemprosesan imej**
165+
* `B` [Ukiran Jahitan](src/algoritma/pemprosesan-imej/ukiran-jahitan) - algoritma saiz semula imej sedar kandungan
166+
* **Statistik**
167+
* `B` [Rawak Berwajaran](src/algoritma/statistik/rawak-wajaran) - pilih item rawak daripada senarai berdasarkan berat item
168+
* **Algoritma evolusi**
169+
* `A` [Algoritma genetik](https://github.com/trekhleb/self-parking-car-evolution) - contoh cara algoritma genetik boleh digunakan untuk melatih kereta letak sendiri
170+
* **Tidak dikategorikan**
171+
* `B` [Menara Hanoi](src/algoritma/tidak dikategorikan/menara-hanoi)
172+
* `B` [Putaran Matriks Persegi](src/algoritma/tidak dikategorikan/putaran-matriks-persegi) - algoritma di tempat
173+
* `B` [Permainan Lompat](src/algoritma/tidak dikategorikan/permainan lompat) - menjejak ke belakang, pengaturcaraan dinamik (atas ke bawah + bawah ke atas) dan contoh tamak
174+
* `B` [Laluan Unik](src/algorithms/uncategorized/unique-paths) - penjejakan ke belakang, pengaturcaraan dinamik dan contoh berasaskan Segitiga Pascal
175+
* `B` [Teres Hujan](src/algoritma/tidak dikategorikan/teres hujan) - memerangkap masalah air hujan (versi pengaturcaraan dinamik dan kekerasan)
176+
* `B` [Tangga Rekursif](src/algoritma/tidak dikategorikan/tangga rekursif) - kira bilangan cara untuk sampai ke atas (4 penyelesaian)
177+
* `B` [Masa Terbaik Untuk Membeli Saham Jual](src/algoritma/tidak dikategorikan/masa-terbaik-untuk-membeli-menjual-saham) - bahagikan dan takluk serta contoh satu laluan
178+
* `A` [Masalah N-Queens](src/algoritma/uncategorized/n-queens)
179+
* `A` [Lawatan Kesatria](src/algoritma/tidak dikategorikan/jelajah kesatria)
180+
181+
### Algoritma mengikut Paradigma
182+
183+
Paradigma algoritma ialah kaedah atau pendekatan generik yang mendasari reka bentuk kelas
184+
daripada algoritma. Ia adalah abstraksi yang lebih tinggi daripada tanggapan algoritma, sama seperti an
185+
algoritma adalah abstraksi yang lebih tinggi daripada program komputer.
186+
187+
* **Brute Force** - lihat semua kemungkinan dan pilih penyelesaian terbaik
188+
* `B` [Carian Linear](src/algorithm/search/linear-search)
189+
* `B` [Rain Terraces](src/algoritma/uncategorized/rain-teres) - memerangkap masalah air hujan
190+
* `B` [Tangga Rekursif](src/algoritma/tak berkategori/tangga rekursif) - kira bilangan cara untuk sampai ke atas
191+
* `A` [Subarray Maksimum](src/algoritma/set/subarray maksimum)
192+
* `A` [Masalah Jurujual Perjalanan](src/algoritma/graf/jurujual-perjalanan) - laluan terpendek mungkin yang melawati setiap bandar dan kembali ke bandar asal
193+
* `A` [Transformasi Fourier Diskret](src/algoritma/matematik/fourier-transform) - menguraikan fungsi masa (suatu isyarat) kepada frekuensi yang membentuknya
194+
* **Rakus** - pilih pilihan terbaik pada masa semasa, tanpa sebarang pertimbangan untuk masa hadapan
195+
* `B` [Permainan Lompat](src/algoritma/tidak dikategorikan/permainan lompat)
196+
* `A` [Masalah Knapsack Tidak Terikat](src/algoritma/set/masalah-knapsack)
197+
* `A` [Algoritma Dijkstra](src/algoritma/graf/dijkstra) - mencari laluan terpendek ke semua bucu graf
198+
* `A` [Algoritma Prim](src/algoritma/graf/prim) - mencari Pokok Spanning Minimum (MST) untuk graf tidak berwajaran
199+
* `A` [Algoritma Kruskal](src/algoritma/graf/kruskal) - mencari Pokok Spanning Minimum (MST) untuk graf tidak berwajaran
200+
* **Divide and Conquer** - bahagikan masalah kepada bahagian yang lebih kecil dan kemudian selesaikan bahagian tersebut
201+
* `B` [Carian Perduaan](src/algoritma/carian/pencarian-perduaan)
202+
* `B` [Menara Hanoi](src/algoritma/tidak dikategorikan/menara-hanoi)
203+
* `B` [Segitiga Pascal](src/algoritma/matematik/segitiga-pascal)
204+
* `B` [Algoritma Euclidean](src/algorithm/math/euclidean-algorithm) - kira Pembahagi Sepunya Terhebat (GCD)
205+
* `B` [Isih Gabung](src/algoritma/isih/isih-gabung)
206+
* `B` [Isih Pantas](src/algoritma/isih/isih-pantas)
207+
* `B` [Carian Kedalaman-Pertama Pokok](src/algoritma/pokok/carian-pertama-dalam) (DFS)
208+
* `B` [Graph Depth-First Search](src/algorithm/graph/depth-first-search) (DFS)
209+
* `B` [Matriks](src/algoritma/matematik/matriks) - menjana dan melintasi matriks pelbagai bentuk
210+
* `B` [Permainan Lompat](src/algoritma/tidak dikategorikan/permainan lompat)
211+
* `B` [Fast Powering](src/algorithm/math/fast-powering)
212+
* `B` [Masa Terbaik Untuk Membeli Saham Jual](src/algoritma/tidak dikategorikan/masa-terbaik-untuk-membeli-menjual-saham) - bahagikan dan takluk serta contoh satu laluan
213+
* `A` [Permutasi](src/algoritma/set/permutasi) (dengan dan tanpa ulangan)
214+
* `A` [Gabungan](src/algoritma/set/gabungan) (dengan dan tanpa ulangan)
215+
* `A` [Subarray Maksimum](src/algoritma/set/subarray maksimum)
216+
* **Pengaturcaraan Dinamik** - bina penyelesaian menggunakan sub-penyelesaian yang ditemui sebelum ini
217+
* `B` [Nombor Fibonacci](src/algoritma/matematik/fibonacci)
218+
* `B` [Permainan Lompat](src/algoritma/tidak dikategorikan/permainan lompat)
219+
* `B` [Laluan Unik](src/algoritma/tidak dikategorikan/laluan-unik)
220+
* `B` [Rain Terraces](src/algoritma/uncategorized/rain-teres) - memerangkap masalah air hujan
221+
222+
* `B` [Tangga Rekursif](src/algoritma/tak berkategori/tangga rekursif) - kira bilangan cara untuk sampai ke atas
223+
* `B` [Ukiran Jahitan](src/algoritma/pemprosesan-imej/ukiran-jahitan) - algoritma saiz semula imej sedar kandungan
224+
* `A` [Jarak Levenshtein](src/algoritma/rentetan/levenshtein-jarak) - jarak edit minimum antara dua jujukan
225+
* `A` [Turutan Sepunya Terpanjang](src/algoritma/set/susulan-biasa-terpanjang) (LCS)
226+
* `A` [Subrentetan Biasa Terpanjang](src/algoritma/rentetan/subrentetan-biasa-terpanjang)
227+
* `A` [Surutan Bertambah Terpanjang](src/algoritma/set/susulan-bertambah-panjang)
228+
* `A` [Jujukan Sepunya Terpendek](src/algoritma/set/jujukan-sepunya-terpendek)
229+
* `A` [0/1 Masalah Knapsack](src/algoritma/set/knapsack-problem)
230+
* `A` [Pembahagian Integer](src/algoritma/matematik/integer-partition)
231+
* `A` [Subarray Maksimum](src/algoritma/set/subarray maksimum)
232+
* `A` [Algoritma Bellman-Ford](src/algorithm/graph/bellman-ford) - mencari laluan terpendek ke semua bucu graf
233+
* `A` [Algoritma Floyd-Warshall](src/algorithm/graph/floyd-warshall) - cari laluan terpendek antara semua pasangan bucu
234+
* `A` [Padanan Ungkapan Biasa](src/algoritma/rentetan/padanan-ungkapan-biasa)
235+
* **Penjejakan Belakang** - sama seperti kekerasan, cuba jana semua penyelesaian yang mungkin, tetapi setiap kali anda menjana penyelesaian seterusnya anda menguji
236+
jika ia memenuhi semua syarat, dan hanya kemudian terus menjana penyelesaian seterusnya. Jika tidak, mundur, dan teruskan a
237+
jalan yang berbeza untuk mencari penyelesaian. Biasanya traversal DFS bagi ruang keadaan sedang digunakan.
238+
* `B` [Permainan Lompat](src/algoritma/tidak dikategorikan/permainan lompat)
239+
* `B` [Laluan Unik](src/algoritma/tidak dikategorikan/laluan-unik)
240+
* `B` [Set Kuasa](src/algoritma/set/set-kuasa) - semua subset set
241+
* `A` [Kitaran Hamiltonian](src/algoritma/graf/kitaran-hamilton) - Lawati setiap bucu tepat sekali
242+
* `A` [Masalah N-Queens](src/algoritma/uncategorized/n-queens)
243+
* `A` [Lawatan Kesatria](src/algoritma/tidak dikategorikan/jelajah kesatria)
244+
* `A` [Jumlah Gabungan](src/algoritma/set/jumlah-gabungan) - cari semua gabungan yang membentuk jumlah tertentu
245+
246+
* **Branch & Bound** - ingat penyelesaian kos terendah yang terdapat pada setiap peringkat penjejakan ke belakang
247+
cari, dan gunakan kos penyelesaian kos terendah yang ditemui setakat ini sebagai had yang lebih rendah pada kos
248+
penyelesaian kos termurah untuk masalah, untuk membuang penyelesaian separa dengan kos lebih besar daripada
249+
penyelesaian kos terendah ditemui setakat ini. Biasanya traversal BFS digabungkan dengan traversal DFS of state-space
250+
pokok sedang digunakan.
251+
252+
## Cara menggunakan repositori ini
253+
254+
**Pasang semua kebergantungan**
255+
256+
```
257+
pemasangan npm
258+
```
259+
260+
**Jalankan ESLint**
261+
262+
Anda mungkin mahu menjalankannya untuk menyemak kualiti kod.
263+
264+
```
265+
npm run lint
266+
```
267+
268+
**Jalankan semua ujian**
269+
270+
```
271+
ujian npm
272+
```
273+
274+
**Jalankan ujian mengikut nama**
275+
276+
```
277+
ujian npm -- 'LinkedList'
278+
```
279+
280+
**Penyelesaian masalah**
281+
282+
Jika linting atau ujian gagal, cuba padamkan folder `node_modules` dan pasang semula pakej npm:
283+
284+
```
285+
rm -rf ./node_modules
286+
npm i
287+
```
288+
289+
Juga pastikan anda menggunakan versi Nod yang betul (`>=14.16.0`). Jika anda menggunakan [nvm](https://github.com/nvm-sh/nvm) untuk pengurusan versi Nod, anda boleh menjalankan `nvm use` daripada folder akar projek dan versi yang betul akan diambil.
290+
291+
**Taman permainan**
292+
293+
Anda boleh bermain dengan struktur data dan algoritma dalam fail `./src/playground/playground.js` dan tulis
294+
mengujinya dalam `./src/playground/__test__/playground.test.js`.
295+
296+
Kemudian hanya jalankan arahan berikut untuk menguji sama ada kod taman permainan anda berfungsi seperti yang diharapkan:
297+
298+
```
299+
ujian npm -- 'taman permainan'
300+
```
301+
302+
## Informasi berguna
303+
304+
### Rujukan
305+
306+
[▶ Struktur Data dan Algoritma di YouTube](https://www.youtube.com/playlist?list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)
307+
308+
### Notasi O Besar
309+
310+
*Notasi O Besar* digunakan untuk mengklasifikasikan algoritma mengikut cara masa berjalan atau keperluan ruang mereka berkembang apabila saiz input bertambah.
311+
Pada carta di bawah anda mungkin menemui susunan pertumbuhan algoritma yang paling biasa yang dinyatakan dalam tatatanda Big O.
312+
313+
![Graf O Besar](./assets/big-o-graph.png)
314+
315+
Sumber: [Big O Cheat Sheet](http://bigocheatsheet.com/).
316+
317+
Di bawah ialah senarai beberapa tatatanda Big O yang paling banyak digunakan dan perbandingan prestasinya terhadap saiz data input yang berbeza.
318+
319+
| Notasi O Besar | Taip | Pengiraan untuk 10 elemen | Pengiraan untuk 100 elemen | Pengiraan untuk 1000 elemen |
320+
| -------------- | ----------- | ---------------------------- | ---------------------------- | ------------------------------- |
321+
| **O(1)** | Malar | 1 | 1 | 1 |
322+
| **O(log N)** | Logaritma | 3 | 6 | 9 |
323+
| **O(N)** | Linear | 10 | 100 | 1000 |
324+
| **O(N log N)** | n log(n) | 30 | 600 | 9000 |
325+
| **O(N^2)** | Kuadratik | 100 | 10000 | 1000000 |
326+
| **O(2^N)** | Eksponen | 1024 | 1.26e+29 | 1.07e+301 |
327+
| **O(N!)** | Faktorial | 3628800 | 9.3e+157 | 4.02e+2567
328+
329+
### Kerumitan Operasi Struktur Data
330+
331+
| Struktur Data | Akses | Cari | Sisipan | Pemadaman | Komen |
332+
| ------------------------ | :-------: | :-------: | :-------: | :-------: | :-------- |
333+
| **Array** | 1 | n | n | n | |
334+
| **Timbunan** | n | n | 1 | 1 | |
335+
| **Beratur** | n | n | 1 | 1 | |
336+
| **Senarai Terpaut** | n | n | 1 | n | |
337+
| **Jadual Hash** | - | n | n | n | Dalam kes kos fungsi cincang yang sempurna ialah O(1) |
338+
| **Pokok Carian Binari** | n | n | n | n | Dalam kes kos pokok seimbang ialah O(log(n)) |
339+
| **B-Tree** | log(n) | log(n) | log(n) | log(n) | |
340+
| **Pokok Merah-Hitam** | log(n) | log(n) | log(n) | log(n) | |
341+
| **Pokok AVL** | log(n) | log(n) | log(n) | log(n) | |
342+
| **Penapis Bloom** | - | 1 | 1 | - | Positif palsu mungkin semasa mencari |
343+
344+
### Kerumitan Algoritma Pengisihan Tatasusunan
345+
346+
| Nama | Terbaik | Purata | Paling teruk | Memori | Stabil | Komen |
347+
| ---------------------- | :-------------: | :-----------------: | :-----------------: | :-------: | :-------: | :-------- |
348+
| **Isih gelembung** | n | n<sup>2</sup> | n<sup>2</sup> | 1 | Ya | |
349+
| **Isihan sisipan** | n | n<sup>2</sup> | n<sup>2</sup> | 1 | Ya | |
350+
| **Isih pilihan** | n<sup>2</sup> | n<sup>2</sup> | n<sup>2</sup> | 1 | Tidak | |
351+
| **Isihan timbunan** | n&nbsp;log(n) | n&nbsp;log(n) | n&nbsp;log(n) | 1 | Tidak | |
352+
| **Isih gabung** | n&nbsp;log(n) | n&nbsp;log(n) | n&nbsp;log(n) | n | Ya | |
353+
| **Isih cepat** | n&nbsp;log(n) | n&nbsp;log(n) | n<sup>2</sup> | log(n) | Tidak | Quicksort biasanya dilakukan di tempat dengan ruang tindanan O(log(n)) |
354+
| **Isih cangkerang** | n&nbsp;log(n) | bergantung pada jujukan jurang | n&nbsp;(log(n))<sup>2</sup> | 1 | Tidak | |
355+
| **Isih mengira** | n + r | n + r | n + r | n + r | Ya | r - nombor terbesar dalam tatasusunan |
356+
| **Isih Radix** | n * k | n * k | n * k | n + k | Ya | k - panjang kunci terpanjang |
357+
358+
## Penyokong Projek
359+
360+
> Anda boleh menyokong projek ini melalui ❤️️ [GitHub](https://github.com/sponsors/trekhleb) atau ❤️️ [Patreon](https://www.patreon.com/trekhleb).
361+
362+
[Orang yang menyokong projek ini](https://github.com/trekhleb/javascript-algorithms/blob/master/BACKERS.md) `∑ = 0`
363+
364+
> ℹ️ Beberapa lagi [projek](https://trekhleb.dev/projects/) dan [artikel](https://trekhleb.dev/blog/) tentang JavaScript dan algoritma pada [trekhleb.dev](https:/ /trekhleb.dev)

0 commit comments

Comments
 (0)
Please sign in to comment.