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;
    }
  • 相关阅读:
    自动化基础知识
    第一章Google软件测试介绍
    《将博客搬至CSDN》
    二叉树的先序遍历和中序遍历分析(递归)
    java 部分快捷功能
    toString
    自增自减运算符剖析
    二进制数的直接表示
    编程中的&&和||
    npm 镜像地址设置
  • 原文地址:https://www.cnblogs.com/lyc94620/p/12545737.html
Copyright © 2011-2022 走看看