来源:http://blog.sina.com.cn/s/blog_788fd8560100plj3.html
PHP已经面世十几年了,数据结构更是数倍于PHP生龄,但很不理解的是语言界竟无一人出版使用PHP来讲解数据结构的专业书目。是PHP应用过于简单不懈著作?还是PHP所占领域并不重要导致?总之我当初在学这一块的时候甚是苦恼,伪代码让我很头痛。
<?php
//插入排序(数组排序)前提:、适合:元素个数较少的排序
//参数:insertion_sort(目标数组)
function insertion_sort($array) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(insertion_sort($array));
//冒泡排序(数组排序)
//参数:bubble_sort(目标数组)
function bubble_sort($array) {
//
for ($j=$i+1; $j<$len; $j++) {
//方式二
//
if($array[$i] < $array[$j]) {
//从大到小排序
}
//$array
= array("2", "3", "1", "4");
//print_r(bubble_sort($array));
//快速排序(数组排序)
//参数说明quick_sort(数组)
function quick_sort($array) {
}
//$array
= array("2", "4", "1", "3", "1");
//print_r(quick_sort($array));
//分治|合并算法排序(数组排序)前提:数组A[p...q]和A[q+1...r]已经排好序、适合:元素个数较多的排序
//参数:merge_sort(目标数组,开始位置,结束位置)
//Failure
//function merge_sort($array, $p, $q, $r) {
//
// $n1
= $q - $p + 1;
// $n2
= $r - $q;
// for($i=1; $i<$n1; $i++) {
//
$arr1 = $array[$p+$i-1];
//
for ($j=1; $j<$n2; $j++) {
//
$arr2
= $arr1[$q+$j];
//
$i
= 1;
//
$j
= 1;
//
for($k=$p; $k<=$r; $k++) {
//
if($arr1[$i] <= $arr2[$j]) {
//
$array[$k]
= $arr1[$i];
//
$i++;
//
}else {
//
$array[$k]
= $arr2[$j];
//
$j++;
//
}
//
}
//
}
// }
//
// return $array;
//}
//Failure
//function merge_sort_chil($array, $p, $q, $r) {
//
// $len1
= $q - $p +1;
// $len2
= $r - $q;
// for($t=0; $t<$len1; $t++) {
//
$arr1[$t] = $array[$p+$t];
// }
// for ($t=0; $t<$len2; $t++) {
//
$arr2[$t] = $array[$q+$t+1];
// }
//
// $i=$j
= 0;
// $k
= $p;
// while($i<$len1 && $j<$len2) {
//
if($arr1[$i] <= $arr2[$j]) {
//
$array[$k++]
= $arr1[$i++];
//
}else {
//
$array[$k++]
= $arr2[$j++];
//
}
// }
//
// while($i<$len1) {
//
$array[$k++]
= $arr1[$i++];
// }
// while($j<$len2) {
//
$array[$k++]
= $arr2[$j++];
// }
//}
//
//function merge_sort($array, $p, $r) {
//
// if($p < $r) {
//
$q
= ($p+$r)/2;
//
merge_sort($array,$p,$q);
//
merge_sort($array,$q+1,$r);
//
merge_sort_chil($array,$p,$q,$r);
// }
//
// return $array;
//}
//归并算法排序(数组排序)前提:数组A[p...q]和A[q+1...r]已经排好序、适合:元素个数较多的排序
//前提:数组$arr1和$arr2已经排好序
function merge_sort($arr1, $arr2) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//$arr1
= array("1", "2", "4");
//$arr2
= array("3", "5", "6");
//print_r(merge_sort($arr1, $arr2));
//选择排序(数组排序)前提:、适合:
//参数:select_sort(目标数组)
function select_sort($array) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(select_sort($array));
//基数排序(数组排序)前提:、适合:
//参数:base_sort(目标数组,基数值)
//Failure
//function base_sort($array, $key) {
//
// $len
= count($array);
// $k
= 0;
// $n
= 1;
// while($n <= $key) {
//
for($i=0; $i<$len; $i++) {
//
$lsd
= (($array[$i]/$n));
//
$temp[$lsd][$order[$lsd]] = $array[$i];
//
$order[$lsd]++;
//
}
//
for ($i=0; $i<$len; $i++) {
//
if($order[$i] != 0) {
//
for ($j=0; $j<$order[$i]; $j++) {
//
$array[$k]
= $temp[$i][$j];
//
}
//
$order[$i]
= 0;
//
}
//
$n *= 10;
//
$k = 0;
//
}
// }
//
// return $array;
//}
$array
= array("5", "2", "4", "6", "1", "3");
//print_r(base_sort($array, 4));
//堆排序(数组排序)前提:、适合:
//参数:heap_sort(目标数组,长度)
//未理解
function heap_sort(&$array) {
}
function adjust_node($n, $last, &$array) {
}
function swap(&$a, &$b) {
// $temp
= $a;
// $a
= $b;
// $b
= $temp;
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(heap_sort($array));
//希尔排序(数组排序)前提:、适合:缩小增量排序,不稳定
//参数:shell_sort(目标数组)
//Failure
function shell_sort($array) {
}
//希尔排序
//Failure
function shell_sort2($array, $from, $len) {
}
function modify_insert_sort($array, $from, $len, $delta) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(shell_sort2($array, 0, 6));
//间接排序(数组排序)前提:、适合:复制代价很高的元素。
//参数:indirect_sort(目标数组,数组长度)
//Faulure URL:http://www.cppblog.com/yuziyu/archive/2009/07/16/90212.html
function indirect_sort($array, $len) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(indirect_sort($array, 6));
//计数排序(数组排序)前提:、适合:计数排序的基本思想就是对每一个输入元素X,确定出小于X的元素个数后插入到对应位置
//参数:count_sort(目标数组)
function count_sort($array, $size) {
}
//$array
= array("5", "2", "4", "6", "6", "1", "1", "3");
//print_r(count_sort($array, 8));
//基数排序(数组排序)前提:、适合:
//参数:distribution_sort(目标数组,数组长度)
//Failure URL:http://baike.baidu.com/view/1170573.htm
function distribution_sort($array, $d) {
}
//Failure URL:http://www.cnblogs.com/sun/archive/2008/06/26/1230095.html
function radix_sort($array, $digit) {
}
function math_pow($d, $n) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(radix_sort($array, 3));
//桶排序(数组排序)前提:、适合:桶排序就是排序数字按大小划分为n段,每段装在一个桶里,然后对各个桶分别排序
//参数:bucket_sort(目标数组,开始排序位置,数组长度,数组最大值)
//Failure
function bucket_sort($keys, $from, $len, $max) {
}
function array_copy($keys, $from, &$temp, $start, $len) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(bucket_sort($array, 0, 6, 6));
//循序搜寻法(数组值查找)前提:、适合:
//参数:(目标数组,键值)
function liner_search($array, $key) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(liner_search($array, 1));
//顺序查找(数组里的某个元素)
//参数:sequence_search(目标数组,查找范围,目标值)
function sequence_search($array, $n, $k) {
// $array[$n]
= $k;
}
//$array
= array("1", "2", "3", "4");
//echo sequence_search($array, 4, 3);
//二分查找(数组里查找某个元素),前提:该数组已经按从小到大的顺序排列好了
//参数:bin_sch(目标数组,开始位置,最终位置,目标值)
function bin_sch($array, $low, $high, $k) {
}
//$array
= array("1", "2", "3", "4");
//echo bin_sch($array, 2, 3, 4);
//插捕搜寻法(数组查找元素)前提:、适合:分布平均的数组
//参数:interpolation_sch(目标数组,目标值)
//Failure
function interpolation_sch($array, $key) {
}
//$array
= array("5", "2", "4", "6", "1", "3");
//print_r(interpolation_sch($array, 2));
//斐波那契数列(计算总和)前提:、适合:
//参数:fibonacci(长度)
function fibonacci($n) {
}
//print_r(fibonacci(5));
//线性表删除(数组中实现)
//参数:delete_array_element(目标数组,删除位置)
function delete_array_element($array, $i) {
}
//$array
= array("1", "2", "3", "4");
//print_r(delete_array_element($array, 2));
//汉落塔算法,前提:、适合:
//hanoi参数:(塔高数,柱1,柱2,柱3)
function hanoi($key, $a, $b, $c) {
}
//print_r(hanoi(3, "A", "B", "C" ));
//阶乘算法
//factorial参数:(阶乘基数)
function factorial($value) {
}
//$fact_value
= factorial(5);
//print_r($fact_value);
//指定三角形边输出倒三角形
//reverse_triangle参数:(三角形边长)
function reverse_triangle($len) {
}
function reverse_triangle2($len) {
}
//$triangle
= reverse_triangle(6);
//$triangle2
= reverse_triangle2(6);
//print_r($triangle);
//print_r($triangle2);
//根据要求输出的长度,匹配预先定义好的字符中的字符组合各种可能进行输出
function gene_dic($n){
//$source='0123456789abcdefghijklmn
opqrstuvwxyz';
$source='0123456789';
$len=strlen($source);
$count=1;
for($i=0;$i<$n;$i++){
for($i=0;$i<$count;$i++){
echo "$word ";
}
}
//gene_dic(2);
//根据两个矩形的四个点的坐标求出交集四点坐标,还不够完善
//矩形一的四点:a,b,c,d、矩形二四点:e,f,g,k
function rectangle_intersect($a, $b, $c, $d, $e, $f, $g, $h) {
}
//以坐标的方式输出
//$res = rectangle_intersect(array(2,5), array(5,5), array(2,3), array(5,3), array(4,7), array(10,7), array(4,4), array(10,4)); //有交集
//$res = rectangle_intersect(array(-2,6), array(2,6), array(-2,4), array(2,4), array(-1,5), array(1,5), array(-1,-3), array(1,-3));
//print_r($res);
?>