zoukankan      html  css  js  c++  java
  • 排序

    排序

    基本概念

    稳定性:稳定性是指两个相同的值,排序前后的顺序保持不变,即该排序算法是稳定的

    衡量标准:时间复杂度、空间复杂度

    内部排序

    插入排序:直接插入排序、折半插入排序、希尔排序

    交换排序:冒泡排序、快速排序

    选择排序:简单选择排序、堆排序

    归并排序

    基数排序

    外部排序

    多路归并排序

    注:基于比较的排序,至少进行比较次数为 log2(n!)  【向上取整】

    一趟排序能确定一个元素最终位置的排序算法有:简单选择排序、快速排序、堆排序、冒泡排序

    趟次数与初始状态无关的排序算法:插入排序、选择排序、基数排序

    简单选择排序的关键字比较次数与待排序元素序列的初始排列无关

    算法 最好情况 平均情况 最坏情况 空间复杂度 是否稳定
    直接插入排序 O(n)

    O(n^2)

    O(n^2) O(1)
    冒泡排序 O(n) O(n^2) O(n^2) O(1)
    简单选择排序 O(n^2) O(n^2) O(n^2) O(1)
    希尔排序       O(1)
    快速排序 O(nlog2(n)) O(nlog2(n)) O(n^2) O(log2(n))
    堆排序 O(nlog2(n)) O(nlog2(n)) O(nlog2(n)) O(1)
    2-路归并排序 O(nlog2(n)) O(nlog2(n)) O(nlog2(n)) O(n)
    基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) O(r)

    附:

    既然有排序算法,是否有乱序算法

    PHP:

    <?php
    $arr = [];
    for($i = 0; $i < 100; $i++) {
        $arr[$i] = $i+1;
    }
    for($i = 0; $i < 100; $i++) {
        $rand = rand(0,99);
        $temp = $arr[$i];
        $arr[$i] = $arr[$rand];
        $arr[$rand] = $temp;
    }
  • 相关阅读:
    CentOS7下安装Scrapy
    阿里云ECS提示RHSA-2017:3263: curl security update
    CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
    Electron: 从零开始写一个记事本app
    flask请求流程
    编写Dockerfile
    docker-compose使用
    redis持久化切换rdb到aof
    RESTful API规范
    介绍importlib
  • 原文地址:https://www.cnblogs.com/lyc94620/p/12545737.html
Copyright © 2011-2022 走看看