PHP读取大文件末尾N行的高效方法

我们先将指针移动到末尾,并向后倒退2个位置,通过fgetc读取一个字符,判断这个字符是不是”\n”也就是换行符,如果不是换行符,那么继续倒退一个位置再次判断,直到我们倒退到上一行的结尾换行符为止,直接使用fgets将一整行都取出来即可。这里面用到两个while循环,外层循环控制需要取得的行数,内层循环控制fseek动作。[……]

Read more

Continue Reading

约瑟夫环

是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

要求输入:n,k,m

输出:退出顺序

<?php
//$n 人数 $k 开始位置  $m 要数得数字
function array_f($n,$k,$m){
    for($i=1; $i <= $n ; $i++){
        $oldArr[] = $i;
    }    
    for ($i=0;$i<$k[......]

Read more

Continue Reading

使用 PHP 实现冒泡排序,将数组 $a=array() 安装从小到大的方式进行排序

在要排序的一数组中,对当前还未排序好的范围内的全部数,自前向后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的数往上冒。

即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将他们互换。

<?php
$arr = [1,43,6,7,3,5,78];
function bubbleSort ($arr) {
    $num = count($arr);
    $temp;
    for ($i=0; $i<$num-1; $i++){
        for ($j=0; $j<$num-1-$i; $j++){[......]

Read more

Continue Reading

使用 PHP 秒速快速排序算法

基本思想:选择一个基准元素,通常选择第一个元素,通过一趟扫描,将待排序列分为两个部分,一部分比基准元素小(做数组),一部分大于等于基准元素组(右数组),此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

可以看到,这种方法是把大问题转变为小问题的方法,使用递归实现。

image

<?php
//递归函数的特点有两个
//1.要有递归出口,应该放到递归函数的最前面
//2.要有递归调用
function quick sort ($arr) {
    //递归出口判断要放在最前面
    if (count($arr) <= 1){[......]

Read more

Continue Reading
Close Menu