面试

作者: Leonzai | 来源:发表于2018-06-25 09:34 被阅读9次

从来没有经历过面试。准备去大城市看看。从网上找点面试题看看。

八大排序算法

冒泡

// 冒泡排序
function bubble($arr)
{
    $minIndex = 0;
    $maxIndex = count($arr) - 1;
    for ($i = $minIndex; $i <= $maxIndex; $i++) {
        for ($j = 0; $j < $maxIndex - $i; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $tmp = $arr[$j + 1];
                $arr[$j + 1] = $arr[$j];
                $arr[$j] = $tmp;
            }
        }
    }
    return $arr;
}

// 排序算法优化:跑完一趟就判断一次原数组现在是否有序,如果有序;直接 return
function bubble(&$arr)
{
    $minIndex = 0;
    $maxIndex = count($arr) - 1;
    for ($i = $minIndex; $i <= $maxIndex; $i++) {
        $isOrdered = 0;
        for ($j = 0; $j < $maxIndex - $i; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $tmp = $arr[$j + 1];
                $arr[$j + 1] = $arr[$j];
                $arr[$j] = $tmp;
                $isOrdered = 1;
            }
        }
        if (!$isOrdered) {
            return $arr;
        }
    }

    return $arr;
}

// 优化 2
function bubble(&$arr)
{
    $minIndex = 0;
    $maxIndex = count($arr) - 1;
    $currentSwapIndex = 0;
    $maxSwapIndex = $maxIndex;
    for ($i = $minIndex; $i <= $maxIndex; $i++) {
        $isOrdered = 0;
        for ($j = 0; $j < $maxSwapIndex; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                swap($arr[$j], $arr[$j + 1]);
                $isOrdered = 1;
                $currentSwapIndex = $j;
            }
        }
        if (!$isOrdered) {
            return $arr;
        }
        $maxSwapIndex = $currentSwapIndex;
    }


    return $arr;
}

时间复杂度:(n-1) + (n-2) + ... + 1 = n * (n - 1) / 2 =>
n(n-1)/2 = (n^2 - n) / 2 => O(N^2)

优化后的冒泡排序时间复杂度最优情况是 O(n)

选择

function pick($arr)
{
    $minIndex = 0;
    $maxIndex = count($arr) - 1;
    for ($i = $minIndex; $i <= $maxIndex; $i++) {
        $currentMinIndex = $i;
        for ($j = $i; $j < $maxIndex; $j++) {
            if ($arr[$currentMinIndex] > $arr[$j + 1]) {
                $currentMinIndex = $j+1;
            }
        }
        if ($i !== $currentMinIndex) {
            swap($arr[$i], $arr[$currentMinIndex]);
        }
    }

    return $arr;
}

function swap(&$a, &$b)
{
    $tmp = $a;
    $a = $b;
    $b = $tmp;
    return true;
}

之所以叫选择排序。是因为,它每次都会选择未排序中的最小的,和刚刚排完序的元素进行比较。

相关文章

  • 面试者

    面试面试面试

  • 行为性面试 #3.1.9

    面试主要分类 按面试内容:结构化面试、非结构化面试、半结构面试。 按面试中提问类型:行为性面试、情景性面试、动机面...

  • 面试的构成要素

    面试要素是指构成任何一次面试活动必不可少的基本因素。面试因素有10个:面试目的、面试内容、面试方法、面试考官、面试...

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 测评工具

    一、笔试/机考 针对专业性强岗位 二、面试 电话面试/视频面试/技术面试/HR面试/综合面试 1.半结构化面试:面...

  • 面试面试面试伤神伤神

    面试面试面试伤神伤神

  • 思维导图助力面试

    面试前 面试中 面试后

  • 12套JAVA高级面试课程(只为冲高薪准备)

    12套JAVA高级面试课程,BAT高级面试,架构师面试,高级工程师面试,java就业面试,校招面试,算法面试,my...

  • 前端面试知识点整理

    面试1:CSS布局面试2:CSS盒模型面试3:flex弹性盒布局面试4:DOM面试5:原型链面试6:面向对象面试7...

  • 掌握这些套路,90%的面试都能过!!

    面试面试面试,走进大学我们开始发现: 进学生会要面试,进社团也要面试,考研保研都要面试,找工作更是有长达五论面试!...

网友评论

      本文标题:面试

      本文链接:https://www.haomeiwen.com/subject/ermeyftx.html