yousafsyed/algorithms

原始提案:针对具体情况使用合适的数据结构或算法是编程的重要方面。在计算机科学文献中,许多数据结构和算法都已被研究和广泛记录。然而,在Php中还没有实现像红黑树、Trie、不同的排序算法等有用结构的标准库。

v1.0 2016-01-03 14:50 UTC

This package is auto-updated.

Last update: 2024-09-09 21:17:31 UTC


README

描述

Yousaf Syed 编写

原始提案:针对具体情况使用合适的数据结构或算法是编程的重要方面。在计算机科学文献中,许多数据结构和算法都已被研究和广泛记录。然而,在Php中还没有实现像红黑树、Trie、不同的排序算法等有用结构的标准库。本项目将创建这样一个库,并提供特定结构/算法何时使用的文档。它还将附带一个基准测试套件,用于比较不同情况下的性能。

通过composer安装

 composer require yousafsyed/algorithms

用法

        require "./vendor/autoload.php";
		$x = 4;
		$list = array(5,2,3,4,1);
	//Sort Algorithms examples
		$list = Algorithms\Sort::insertion_sort($list);
		$list = Algorithms\Sort::insertion_sort($list);
		$list = Algorithms\Sort::comb_sort($list);
		$list = Algorithms\Sort::selection_sort($list);
		$list = Algorithms\Sort::heap_sort($list);
		$list = Algorithms\Sort::bubble_sort($list);
	
	
	// Search Algorithms examples
	
		echo Algorithms\Search::binary_search($list, $x);
		echo Algorithms\Search::jump_search($x, $list);
		echo Algorithms\Search::kmp_search("ABC ABCDAB ABCDABCDABDE", "ABCDABD"); // 15
	
	
	// Stack Example
		$stack = new  Containers\Stack();
		$stack->push("hellow");
		$stack->push(2);
		$stack->push(3);
		$stack->push(4);
		$stack->push(5);
		echo $stack->top();

功能

已完成的

	* Containers
	  - Stack			         Containers\Stack
	* Search algorithms
	  - Binary Search            Algorithms\Search::binary_search
	  - Knuth-Morris-Pratt       Algorithms\Search::kmp_search
	  - Jump Search              Algorithms\Search::jump_search
	* Sort algorithms           
	  - Bubble sort              Algorithms\Sort::bubble_sort
	  - Comb sort                Algorithms\Sort::comb_sort
	  - Selection sort           Algorithms\Sort::selection_sort
	  - Heapsort                 Algorithms\Sort::heap_sort
	  - Insertion sort           Algorithms\Sort::insertion_sort

许可证

(MIT许可证)

Algorithms and Containers项目版权(c)2015 Yousaf Syed

在此特此授予任何人免费获得本软件及其相关文档副本(以下简称“软件”)的权利,以不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他原因引起的,与软件或软件的使用或其他交易有关。