问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

时间复杂度为O(n^2)的排序

发布网友 发布时间:2023-03-29 03:06

我来回答

1个回答

热心网友 时间:2023-10-30 22:11

/**

* Created by PhpStorm.

* User: shinho01

* Date: 2019/9/11

* Time: 16:11

*/

/**

* 冒泡排序只涉及相邻数据的交互操作,只需要常量集的临时空间,所以空间复杂度为1,是原地排序算法

* 相同大小的元素可以不做交换

* 最坏的时间复杂度是O(n^2),最好情况的复杂度是O(1)

* @param $arr

* @return mixed

*/

function bubbleSort(&$arr)

{

    $n = count($arr);

    if ($n <= 1) {

        return;

    }

    for ($i = 0; $i < $n; $i++) {

        $flag = false;

        for ($j=0; $j < $n-$i-1; $j++) {

            if ($arr[$j] > $arr[$j+1]) {

                $tmp = $arr[$j];

                $arr[$j] = $arr[$j+1];

                $arr[$j+1] = $tmp;

                $flag = true;

            }

}

        if (!$flag) {

            break;

        }

}

}

/**

* 插入排序(左右两部分(已排序和未排序))

* 插入排序的空间复杂度是O(1)

* 是稳定的排序算法

* 最好的时间复杂度是O(N),最坏情况时间复杂度是O(n^2)

* @param $arr

*/

function insertSort(&$arr)

{

    $n = count($arr);

    if ($n <= 1) {

        return;

    }

    for ($i=1; $i< $n; $i++) {

        $value = $arr[$i];

        $j = $i-1;

        for (;$j >= 0; --$j) {

            if ($arr[$j] > $value) {

                $arr[$j+1] = $arr[$j];

            } else {

                break;

            }

}

        $arr[$j+1] = $value;

    }

}

/**

* 空间复杂度O(1),是一种原地排序

* 最好情况和最坏情况的时间复杂度都是O(n^2)

* 非稳定排序算法

* 选择排序

* @param $arr

*/

function selectSort(&$arr)

{

    $n = count($arr);

    if ($n <= 1) {

        return;

    }

    for ($i=0; $i<$n-1; $i++) {

        $p = $i;

        for ($j=$i+1; $j < $n; $j++) {

            if ($arr[$p] > $arr[$j]) {

                $p = $j;

            }

}

        if ($p = $i) {

            continue;

        }

        $tmp = $arr[$i];

        $arr[$i] = $arr[$p];

        $arr[$p] = $tmp;

    }

}

$arr = [9,2,4,6,2,5,9,1,4,6];

bubbleSort($arr);

insertSort($arr);

print_r($arr);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 梦见看有人看黄带的预兆 空调可以一直开除湿吗 空调能一直开除湿吗 近江兄弟的唇膏能涂脸吗 我想问一下元气骑士怎么双切 本人有一款08年的联想天逸F41本,经过升级后 想再用几年,刷 win7 32的好还是64的好呢? 08年的联想台式机可以装win7嘛?原本是vista系统。 85版本DNF鬼泣刷图 四阵点不点满 冰阵和紫阵取舍? 一个PK魔王应该带什么阵? dnf鬼泣的4阵都有什么作用?应该哪俩个一起配合会厉害? 会跳高的乒乓球实验原理 梦见火车站找人的预兆 梦见夜里别人背小孩上山的预兆 梦见自已在摸大便的预兆 梦见摸到屎了的预兆 梦见摸到了屎的预兆 梦见摸大便的预兆 梦见回以前公司工作的预兆 梦见回原来公司上班的预兆 梦见光着脚走路的预兆 算法的时间复杂度为0(N^2) 假设时间复杂度为O(n^2)的算法在有200个元素的数组上运行需要3.1毫秒,则在有500个 如何在短文改错题中用word在已划线要改的词下面写出修改后的词 怎么用wps编辑英语短文改错题答案? 闯红灯的拍照标准 福克斯手自一体手动挡换挡要刹车吗 2015款福特福克斯手动和自动怎样转换 蹦极中国最高的地方在哪里 x3250 m3服务器插上西数紫盘4T 插上后重启电脑,在磁盘管理中没有该硬盘是怎么回事,急 奥迪车钥匙没电怎么换电池? 奥迪车钥匙没电了去哪里换电池 绪论查重吗 绪论要查重吗 洗面奶开了一年能用吗 烤的馕饼为什么占黑渣 梦见狗要咬自己的预兆 乐华4k曲面智能云电视55Xu16000多少钱 论文有几种类型 我的起源青焰斑马怎么得 我的起源斑马怎么打