Tag Archives: data structure

数据结构

在计算机科学中,数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率(英语:algorithmic efficiency)的算法。 一般而言,数据结构的选择首先会从抽象数据类型的选择开始。一个设计良好的数据结构,应该在尽可能使用较少的时间与空间资源的前提下,为各种临界状态下的运行提供支持。数据结构可通过编程语言所提供的数据类型、引用(英语:reference (computer science))及其他操作加以实现。 不同种类的数据结构适合于不同种类的应用,而部分甚至专门用于特定的作业任务。例如,当计算机网络依赖于路由表运作时,B树高度适用于数据库的封装。 在许多类型的程序设计中,选择适当的数据结构是一个主要的考虑因素。许多大型系统的构造经验表明,封装的困难程度与最终成果的质量与表现,都取决于是否选择了最优的数据结构。在许多时候,确定了数据结构后便能很容易地得到算法。而有些时候,方向则会颠倒过来:例如当某个关键作业需要特定数据结构下的算法时,会反过来确定其所使用的数据结构。然而,不管是哪种情况,数据结构的选择都是至关重要的。 系统构造的关键因素是数据结构而非算法的这一深入理解,导致了多种形式化的设计方法与编程语言的出现。绝大多数的语言都带有某种程度上的模块化思想,通过将数据结构的具体实现封装隐藏于受限接口后方的方法,来让不同的应用程序能够安全地重用这些数据结构。C++、Java、Python等面向对象的程序设计语言可使用类来完成这一功能。

php二分法

二分法 function binarySearch($a, $val){ $low = 0; $high= count($a) – 1; while($low <= $high){ $mid = intval(($low+$high)/2); if($a[$mid] == $val) return $mid; if($a[$mid] > $val){ $high = $mid – 1; }else{ $low = $mid + 1; } } return -1; }

PHP 冒泡排序

function maopao($res){ $temp = 0; $i = 0; $j = 0; $a = count($res); for($i = 0; $i

5个猴子分桃子

五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢? function test($n){ $num = 5*$n+1; for($i=5;$i>1;$i–){ $num = ($num/4)*5+1; } if(is_int($num)){ return $num; }else{ $num=test(++$n); return $num; } } echo test(1); 说明: 第5只猴子分时,假定是5n+1 到第4只就是5*(5n+1)/4 +1 = (25n+9)/4 到第3只就是 (125n+45)/16+1= (125n+61)/16 第2只就是(625n+369)/64 第一只猴子就是(3125n + 5*369+256)/256 也就是3125n + 5*369+256能被256整除的最小正n (3125n + 5*369+256) mod 256 = (53n+53)mod 256 = 53(n+1) mod 256 (n+1) mod 256 =0 ==> [...]

PHP 排序算法

插入排序(一维数组) function insert_sort($arr){ $count = count($arr); for($i=1; $i $tmp){ $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; $j–; } } return $arr; } 选择排序(一维数组) function select_sort($arr){ $count = count($arr); for($i=0; $i