PHP基础笔记七

数组相关的函数

排序函数:对数组元素进行排序

sort(),asort(),arsort(),ksort(),krsort()

shuffle()打乱数组;

指针函数:reset():重置指针,将指针回到首位

end():重置指针,将指针指到最后

next():指针下移,取得下一个元素的值

prev():指针上移,取得上一个元素的值

current():获取当前指针对应的元素值

key();获取当前指针对应的下标值

其他函数:count()获取数组长度

array_push():往数组中加入元素后面(数组会改变,引用传递)

array_pop():从数组中取出元素后面(数组会改变,引用传递)

array_shift():从数组中取出一个元素(前面)

array_unshift():从数组中加入一个元素(前面)

array_reverse():反转数组

array_keys():获取一个数组的所有下标,返回一个索引数组

array_values();获取一个数组的所有值,返回索引数组

参考手册


算法

使用代码实现对应的数学模型,从而解决业务问题。

递推思想


    //递推思想
    //需求:规律1,1,2,3,5...
    //求出指定位数对应的值

    //已知条件:第一个和第二个数都为1,第三个开始为前两个数之和
    $f[1] = 1;
    $f[2] = 1;

    $des = 15;
    for($i=3;$i<=$des;$i++){
        $f[$i] = $f[$i-1] + $f[$i-2];
    }
    echo '<pre>';
    print_r($f);

 递归思想

 function res($n){
        if($n==1 || $n==2) return 1;
        //递归点:求n的值,与求n-1的值一样
        return res($n-1) + res($n-2); 
    }
    echo res(15);       //610 

冒泡排序

//数组排序:冒泡排序
    $arr = array(1,4,2,9,7);
    
    //1.想办法将最大的值放到最右边去
    //2.想办法让下面可以每次找出最大值的代码
    for($i=0;$i<count($arr);$i++){

        for($j=0;$j<count($arr) -1;$j++){
            //判断,两两相比
            if($arr[$j] > $arr[$j+1]){
                //左边比右边大:交换
                $temp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $temp;
            }
        }
    }
    echo '<pre>';
    print_r($arr);

选择排序

 //选择排序
    $arr = array(1,4,2,8,5);
    //1. 确定要交换多少次,一次只能找到一个最小的,需要找数组长度对应的次数
    for($i=0;$i<count($arr);$i++){
        //2.假设当第一个是最小的
        $min =$i;   //当前第一个数是最小的
        //3. 拿当前最小的去比较剩余的
        for($j=$i+1;$j<count($arr);$j++){
        //4.比较当前元素与选定元素的最小的元素
            if($arr[$j]<$arr[$min]){
                $min =$j;

            }
        }
        //交换当前选定的值与实际最小值的元素值
        if($min != $i){
            $temp =$arr[$i];
            $arr[$i] = $arr[$min];
            $arr[$min] =$temp;
        }
    }
    echo '<pre>';
    print_r($arr);

 

插入排序 

$arr = array(5,1,7,2,3);
    for($i=1;$i<count($arr);$i++){
        $temp = $arr[$i];
        for($j=$i-1;$j>=0;$j--){
            if($arr[$j] >$temp){
                $arr[$j+1] = $arr[$j];
                $arr[$j] =$temp;
            }else{
                break;
            }
        }
    }
    echo '<pre>';
    print_r($arr);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值