PHP’de Veri yapıları ve algoritmalar 1

PHP’de veri yapıları ve algoritmalarla ilgili birkaç temel örnek aşağıda verilmiştir. Bu örnekler, arama, sıralama ve temel veri yapılarıyla ilgili algoritmaları içerir.
1. Binary Search (İkili Arama Algoritması)
İkili arama, sıralı bir dizide ortadaki elemanı kontrol ederek daha az sayıda karşılaştırma ile arama yapmayı sağlar.
<?php function binarySearch($arr, $x) { $low = 0; $high = count($arr) - 1; while ($low <= $high) { $mid = floor(($low + $high) / 2); // Eğer ortadaki eleman aranan değer ise if ($arr[$mid] == $x) { return $mid; } // Eğer aranan değer ortadaki elemandan küçükse sol tarafa git if ($arr[$mid] > $x) { $high = $mid - 1; } else { // Eğer aranan değer ortadaki elemandan büyükse sağ tarafa git $low = $mid + 1; } } return -1; // Değer bulunamadı } $arr = [1, 3, 5, 7, 9, 11, 13, 15]; $x = 7; $result = binarySearch($arr, $x); if ($result != -1) { echo "Eleman bulundu, index: " . $result; } else { echo "Eleman bulunamadı."; } ?>
2. Bubble Sort (Kabarcık Sıralama Algoritması)
Kabarcık sıralama, her bir öğeyi karşılaştırarak ve gerekirse yer değiştirerek diziyi sıralayan basit bir algoritmadır.
<?php function bubbleSort($arr) { $n = count($arr); for ($i = 0; $i < $n - 1; $i++) { for ($j = 0; $j < $n - $i - 1; $j++) { if ($arr[$j] > $arr[$j + 1]) { // Elemanları yer değiştir $temp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $temp; } } } return $arr; } $arr = [64, 34, 25, 12, 22, 11, 90]; $sortedArray = bubbleSort($arr); echo "Sıralı Dizi: " . implode(", ", $sortedArray); ?>
3. Fibonacci Serisi (Recursive)
Fibonacci serisi, her sayının kendisinden önce gelen iki sayının toplamı olduğu bir dizidir. Bunu PHP'de recursive olarak şu şekilde yazabiliriz:
<?php function fibonacci($n) { if ($n <= 1) { return $n; } return fibonacci($n - 1) + fibonacci($n - 2); } $n = 10; for ($i = 0; $i < $n; $i++) { echo fibonacci($i) . " "; } ?>
4. Linked List (Bağlantılı Liste)
PHP ile basit bir bağlantılı liste yapısı oluşturabiliriz. Aşağıdaki örnek, temel bir Node
ve LinkedList
sınıflarını içerir.
<?php class Node { public $data; public $next; public function __construct($data) { $this->data = $data; $this->next = null; } } class LinkedList { public $head; public function __construct() { $this->head = null; } // Başa eleman ekleme public function insertAtHead($data) { $newNode = new Node($data); $newNode->next = $this->head; $this->head = $newNode; } // Listeyi yazdırma public function printList() { $current = $this->head; while ($current != null) { echo $current->data . " -> "; $current = $current->next; } echo "NULL\n"; } } // Bağlantılı liste örneği $list = new LinkedList(); $list->insertAtHead(10); $list->insertAtHead(20); $list->insertAtHead(30); $list->printList(); // Çıktı: 30 -> 20 -> 10 -> NULL ?>
5. Quick Sort (Hızlı Sıralama Algoritması)
Hızlı sıralama, diziyi parçalara ayırarak ve her parçayı sıralayarak çalışan verimli bir sıralama algoritmasıdır.
<?php function quickSort($arr) { if (count($arr) < 2) { return $arr; } $left = $right = []; $pivot = $arr[0]; for ($i = 1; $i < count($arr); $i++) { if ($arr[$i] < $pivot) { $left[] = $arr[$i]; } else { $right[] = $arr[$i]; } } return array_merge(quickSort($left), [$pivot], quickSort($right)); } $arr = [33, 2, 52, 106, 73, 10]; $sortedArray = quickSort($arr); echo "Sıralı Dizi: " . implode(", ", $sortedArray); ?>