İçeriği Atla

PHP’de Veri yapıları ve algoritmalar 1

PHP’de Veri yapıları ve algoritmalar

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);
?>