ホームページ  >  記事  >  バックエンド開発  >  PHP 学習ノート: データ構造とアルゴリズム

PHP 学習ノート: データ構造とアルゴリズム

WBOY
WBOYオリジナル
2023-10-09 23:54:361517ブラウズ

PHP 学習ノート: データ構造とアルゴリズム

PHP 学習ノート: データ構造とアルゴリズム

概要:
データ構造とアルゴリズムは、コンピューター サイエンスにおける 2 つの非常に重要な概念であり、問​​題を解決するために使用されます。 . コードのパフォーマンスを最適化するための鍵となります。 PHP プログラミングでは、データを保存および操作するためにさまざまなデータ構造を使用する必要があり、さまざまな機能を実装するためにアルゴリズムも使用する必要があります。この記事では、一般的に使用されるデータ構造とアルゴリズムをいくつか紹介し、対応する PHP コード例を示します。

1. 線形構造

  1. Array (配列)
    Array は最も一般的に使用されるデータ構造の 1 つであり、順序付けされたデータ セットを格納するために使用できます。 PHP の配列は順序付けられたマップ (キーと値) のコレクションであり、添字を使用して配列内の要素にアクセスできます。一般的な配列操作の一部を次に示します。
  • 配列の作成: $arr = array(1, 2, 3);
  • 要素の追加: $arr[] = 4 ;
  • アクセス要素: $arr[0];
  • 要素の削除: unset($arr[0]);
  • 配列の長さ: count($arr);
  • ループトラバーサル: foreach ($arr as $value) { ... }
  1. リンクリスト (リンクリスト)
    リンクリストは、一連のノード構造。各ノードにはデータと次のノードへのポインタが含まれます。リンク リストは効率的な挿入および削除操作を実装できますが、検索操作は遅くなります。以下はリンクリストの簡単な例です:
class Node {
    public $data;
    public $next;

    public function __construct($data = null) {
        $this->data = $data;
        $this->next = null;
    }
}

class LinkedList {
    public $head;

    public function __construct() {
        $this->head = null;
    }

    public function insert($data) {
        $newNode = new Node($data);
        if ($this->head === null) {
            $this->head = $newNode;
        } else {
            $currentNode = $this->head;
            while ($currentNode->next !== null) {
                $currentNode = $currentNode->next;
            }
            $currentNode->next = $newNode;
        }
    }

    public function display() {
        $currentNode = $this->head;
        while ($currentNode !== null) {
            echo $currentNode->data . " ";
            $currentNode = $currentNode->next;
        }
    }
}

$linkedList = new LinkedList();
$linkedList->insert(1);
$linkedList->insert(2);
$linkedList->insert(3);
$linkedList->display();

2. 非線形構造

  1. スタック (スタック)
    スタックは後入れです。 -first-out (LIFO) データ構造は、配列またはリンク リストを使用して実装できます。以下は、単純なスタックの例です。
class Stack {
    private $arr;

    public function __construct() {
        $this->arr = array();
    }

    public function push($data) {
        array_push($this->arr, $data);
    }

    public function pop() {
        if (!$this->isEmpty()) {
            return array_pop($this->arr);
        }
    }

    public function isEmpty() {
        return empty($this->arr);
    }
}

$stack = new Stack();
$stack->push(1);
$stack->push(2);
$stack->push(3);
echo $stack->pop();  // 输出 3
  1. Queue (Queue)
    Queue は、配列を使用して実装できる先入れ先出し (FIFO) データ構造です。またはリンクされたリスト。以下は単純なキューの例です:
class Queue {
    private $arr;

    public function __construct() {
        $this->arr = array();
    }

    public function enqueue($data) {
        array_push($this->arr, $data);
    }

    public function dequeue() {
        if (!$this->isEmpty()) {
            return array_shift($this->arr);
        }
    }

    public function isEmpty() {
        return empty($this->arr);
    }
}

$queue = new Queue();
$queue->enqueue(1);
$queue->enqueue(2);
$queue->enqueue(3);
echo $queue->dequeue();  // 输出 1

3. 一般的に使用されるアルゴリズム

  1. ソート アルゴリズム
  2. バブル ソート
  3. 選択ソート
  4. 挿入ソート
  5. クイックソート
  6. マージソート
  7. 検索アルゴリズム
  8. バイナリ検索
  9. 再帰アルゴリズム
  10. Factorial
  11. Fibonacci Sequence

上記は、いくつかの一般的なデータ構造とアルゴリズムのサンプル コードです。これらのコードを学習して理解することで、よりよく習得できます。PHP データ構造とアルゴリズム。もちろん、学習して探索できるデータ構造やアルゴリズムは他にもたくさんありますので、読者の皆さんが学習と練習を続けて、プログラミングの分野での能力を継続的に向上できることを願っています。

以上がPHP 学習ノート: データ構造とアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。