• 2018 php 面试


    排序算法

    快速排序

    快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选,以保证左边的元素都不大于它,其右边都不小于它

    function quickSort($arr){
        //获取数组长度
        $length = count($arr);
        //判断长度是否需要继续二分比较
        if($length <= 1){
            return $arr
        }
        // 定义基准元素
        $base = $arr[0];
        //定义两个空数组,用于存放和基准元素比较后的结果
        $left = [];
        $right = [];
        //遍历数组
        for ($i=1;$i<$length;i++){
            //和基准元素作比较
            if ($arr[i] >$base){
                $right[] = $arr[$i];
            }else{
                $left[] = $arr[$i];
            }        
        }
        //然后递归分别处理left和right
        $left = quickSort($left);
        $right = quickSort($right);
        //合并
        return array_merge($left,[$base],$right) 
    }
    

    冒泡排序

    思路:法如其名,就像冒泡一样,每次从数组中冒出一个最大的数。

    比如:2,4,1

    第一次冒出4:2,1,4

    第二次冒出2:1,2,4

    function    bubbleSort($arr){   
        // 获取数组长度
        $length = count($arr);    
        // 第一层循环控制冒泡轮次
        for($i=0; $i < $length-1; $i++) {     
        // 内层循环控制从第0个键值和后一个键值比较,每次冒出一个最大的数     
        for($k=0; $k < $length-$i; $k++) {         
            if($arr[$k] > $arr[$k+1]){
              $tmp = $arr[$k+1];
              $arr[$k+1] = $arr[$k];
              $arr[$k] = $tmp;
            }
          }
        }
        return    $arr;
      }
    

    选择排序

    思路:每次选择一个相应的元素,然后将其放到指定的位置

    function selectSort($arr){
        //实现思路
        //双重循环完成,外层控制轮数,当前的最小值,内层控制比较次数
        //获取长度
        $length = count($arr);
        for($i=0;$i<$length-1;$i++){
            //假设最小值的位置
            $p = $i;
            //使用假设的最小值和其他值比较,找到当前的最小值
            for ($j=$i+1;$j<$length;$j++){
                //$arr[$p] 是已知的当前最小值
                //判断当前循环值和已知最小值的比较,当发下最小的值时记录下键,并进行下一次比较
                if($arr[$p]>$arr[$j]){
                    $p = $j;//比假设的值更小
                }
            }
            //通过内部for循环找到了当前最小值的key,并保存在$p中
            //判断日光当前$p中的键和假设的最小值的键不一致增将其互换
            if ($p !=$i){
                $tmp = $arr[$p];
                $arr[$p] = $arr[$i];
                $arr[$i] = $tmp
            }
        }
        //返回最终结果
        return $arr
    }
    
  • 相关阅读:
    多线程交替打印示例
    单列集合框架体系Collection
    同域名下,两个网站通过cookie共享登录注册功能大概思路。
    CSS 隐藏滚动条
    Vue3--组件间传值
    TypeScript--类(class)
    TypeScript--泛型(generic)
    理解LDAP与LDAP注入
    CRLF injection 简单总结
    pigctf期末测评
  • 原文地址:https://www.cnblogs.com/puqunzhu/p/9732750.html
Copyright © 2020-2023  润新知