diff --git a/algorithms/BackTracking/PathFinding/PathFinding.php b/algorithms/BackTracking/PathFinding/PathFinding.php index 64e8c9f..8250084 100644 --- a/algorithms/BackTracking/PathFinding/PathFinding.php +++ b/algorithms/BackTracking/PathFinding/PathFinding.php @@ -225,16 +225,19 @@ public function getMapVisitedVisual() echo "
+ +
+ +
+ +dimana: + +- It = Index Tengah +- I0 = Index Awal +- Ia = Index Akhir +- N0 = Nilai Awal +- Na = Nilai Akhir +- C = Nilai dicari + + +contoh data yang sama kita gunakan pada binary search sebelumnya : + +kumpulan data = array(6,7,10,11,14,17,18,19,23,26,38,42,78,79,82,84,85) +nilai dicari = 38 + +maka nilai tengah akan kita peroleh dengan perhitungan sebagai berikut: + +It = 0 + ((16 - 0)/(85 - 6) * (38 - 6)) + +It = 0 + ((16/79) * 32) + +It = 0 + (512/79) + +It = 0 + 6 = 6 + +jadi index tengah berada pada key index 6, dinama nilai pada key index 6 adalah 18, karena 18 lebih kecil dari nilai dicari maka kumpulan data bagian kiri atau yang lebih kecil sama dengan 18 kita keluarkan dari pencarian sehingga index awal = 7 dengan nilai awal = 19, seperti ini kumpulan data = array(19,23,26,38,42,78,79,82,84,85), kemudian kita hitung kembali nilai tengah dari kumpulan data baru. + +index tengah selanjutnya dengan rumus/fungsi yang sama kita peroleh pada index ke 12 dengan nilai 78, dimana nilai index ini lebih besar dari nilai dicari maka, kumpulan data bagian atas kita keluarkan dari pencarian dengan menetapkan index terakhir pada index 11 dengan nilai 42. + +Index tengah selanjutnya kita peroleh pada index ke 10, dan nilai index ini adala nilai yang kita cari. + +Itulah pola kerja dari algoritma pencarian interpolasi ini, kita dapat menulis pseudo code untuk fungsi pencarian ini sebagai berikut : + +```text +ALGORITMA PENCARIAN INTERPOLASI + +GET +Data Array +Nilai dicari +Index Awal +Index Akhir + +WHILE (Index Awal < Index Akhir OR Nilai Awal != Nilai Akhir) + + SET mid = Index Awal + ((Index Akhir - Index Awal) / (Nilai Akhir - Nilai Awal) * (Search Val - Nilai Awal)) + + SWITCH (Nilai Mid) + CASE Nilai Mid == Nilai dicari + RETURN mid + CASE Nilai mid < Nilai dicari + Index Awal = mid + 1 + CASE Nilai mid > Nilai dicari + Index Akhir = mid - 1 + END SWITCH + +END WHILE + +RETURN Data tidak ditemukan +``` +--- +>**Info !** : +>***pseudo code*** atau kode samaran biasa digunakan oleh para programer untuk menulis algoritma sehingga dapat dengan mudah dimengerti untuk kemudian diterjemahkan kedalam bahasa pemograman (interpreter/compiler). +>***pseudo code*** tidak memiliki aturan penulisan yang baku. + +--- +\*\*\* Terima kasih \*\*\* + +### Referensi + +- Programiz. *"Binary Search C, C++, Java, Python"*. [Pranala Luar](https://www.programiz.com/dsa/binary-search). +- Kela Casey, *"Let Us Understand Searching Algorithms"*. [Codersera](https://codersera.com/blog/let-us-understand-searching-algorithms/). 2020 +- Edy Budiman. *"Belajar Dasar: Algoritma dan Pemograman"*. Repository Unmul. +- Udy Manber. *Using Mathematical Induction to Design Computer Algorithms*, Computer Science Technical Report#660. 1986. +- PHP net. *"PHP Manual - Class and Object"*. [Pranala Luar](https://www.php.net/manual/en/language.oop5.php) diff --git a/algorithms/Searching/README.md b/algorithms/Searching/README.md index 95b1162..92d6442 100644 --- a/algorithms/Searching/README.md +++ b/algorithms/Searching/README.md @@ -1,4 +1,27 @@-
Data sebelum disort: ' . json_encode($a) . ''; + $arrA = $this->array; + $arrB = []; + $arrC = []; + + $log .= '
Data sebelum disort: ' . json_encode($arrA) . ''; + $log .= '
'; // Kita loop hingga data di $a kosong - while (count($a) != 0) { + while (count($arrA) != 0) { // Keluarkan nilai paling atas dari array $a - $atasA = array_pop($a); + $atasA = array_pop($arrA); - if ($verbose) { - echo '
Data yang diambil: ' . $atasA . ''; - echo '
Array A: ' . json_encode($a) . ''; - } + $log .= '
Data yang diambil: ' . $atasA . ''; + $log .= '
Array A: ' . json_encode($arrA) . ''; - // Apabila array B ada isinya dan isi paling atas dari array B - // lebih kecil dari array A, kita pindahkan semua nilai-nilai yang - // cocok dengan kondisi tersebut ke array C + // Apabila array arrB ada isinya dan isi paling atas dari array arrB + // lebih kecil dari array arrA, kita pindahkan semua nilai-nilai yang + // cocok dengan kondisi tersebut ke array arrC // // Pada bagian statement kedua, anda dapat mengganti "<" menjadi ">" // sesuai keinginan anda. @@ -55,29 +55,33 @@ public function start(bool $verbose = false): array // Catatan: // Kita harus menghitung isi array terlebih dahulu sebelum mengambil // data array lebih utama agar menghindari error "Undefined index" - while (count($b) > 0 && $atasA > $b[count($b) - 1]) { - // Pindahkan data dari $b ke $c - array_push($c, array_pop($b)); + while (count($arrB) > 0 && $atasA > $arrB[count($arrB) - 1]) { + // Pindahkan data dari $arrB ke $arrC + array_push($arrC, array_pop($arrB)); } - // Setelah aman, kita masukkan data dari $a ke $b - array_push($b, $atasA); + // Setelah aman, kita masukkan data dari $arrA ke $arrB + array_push($arrB, $atasA); - if ($verbose) { - echo '
Array B: ' . json_encode($b) . ''; - echo '
Array C: ' . json_encode($c) . ''; - } + $log .= '
Array B: ' . json_encode($arrB) . ''; + $log .= '
Array C: ' . json_encode($arrC) . ''; - // Apabila isi $c ada, kita balikkan lagi ke $b secara berurutan. - while (count($c) > 0) { - array_push($b, array_pop($c)); + // Apabila isi $arrC ada, kita balikkan lagi ke $b secara berurutan. + while (count($arrC) > 0) { + array_push($arrB, array_pop($arrC)); } - echo !$verbose ? '' : '
Hasil sementara: ' . json_encode($b) . ''; + $log .= '
Hasil sementara: ' . json_encode($arrB) . ''; + $log .= '
'; + } + + $log .= '
Hasil setelah disort: ' . json_encode($arrB) . ''; + + if ($verbose) { + echo $log; } - echo !$verbose ? '' : '
Hasil setelah disort: ' . json_encode($b) . ''; - return $b; + return $arrB; } } diff --git a/assets/content/algorithms/Searching/Interpolation/fungsi.png b/assets/content/algorithms/Searching/Interpolation/fungsi.png new file mode 100644 index 0000000..5b593fa Binary files /dev/null and b/assets/content/algorithms/Searching/Interpolation/fungsi.png differ diff --git a/basics/8_fungsi_dasar/3_Scope_Variabel.php b/basics/8_fungsi_dasar/3_Scope_Variabel.php index 333d2c2..601eabc 100644 --- a/basics/8_fungsi_dasar/3_Scope_Variabel.php +++ b/basics/8_fungsi_dasar/3_Scope_Variabel.php @@ -4,36 +4,39 @@ echo "
"; + $varA = "Variabel varA"; + echo $varA; } fun(); -echo $a; +echo $varA; echo "
Mengunakan Variable varA sebagai lokal variabel