zoukankan      html  css  js  c++  java
  • 排序算法简介

    排序

    1. 排序成有序的顺序表则可以采用查找效率较高的二分法(折半查找法),而无序只能进行顺序查找
    2. 排序两大类:
      • 内部排序:待排序内容不大可以存放再计算机内存中进行排序
      • 外部排序:带排序内容很大,需要借助外存进行排序,一般会用归并排序,因为归并不需要一次性把所有数据都存入内存
    3. 内部排序:
      • 根据不同原则进行分类:(1)插入排序,(2)交换排序,(3)选择排序,(4)归并排序,(5)基数排序
      • 根据所需工作量区分:(1)简单的排序:时间复杂度 O(n^2),(2)先进的排序:时间复杂度 O(n logn) <--log 是以 2 为底,(3)基数的排序:时间复杂度 O(d n)
      • 时间复杂度的 n 表示 数据增大 n 倍,假设 O(log256) 则表示数据增大 256 倍,其时间复杂度仅仅增大 8 倍

    内部排序时间空间复杂度

    算法名 最优 Time 平均 Time 最差 Time Space
    Radix Sort(基数) O(n+m) O(k (n+m)) O(k (n+m)) O(m)
    Quick Sort(快排) O(n logn) O(n logn) O(n ^2) O(logn)
    Merge Sort(归并) O(n logn) O(n logn) O(n logn) O(n)
    Heap Sort(堆排) O(n logn) O(n logn) O(n logn) O(1)
    Shell Sort(希尔) O(n^(1.3)) 与增量取值有关 O(n^(2)) O(1)
    Binary Sort(二分法) O(n) O(n^2) O(n^2) O(1)
    Insert Sort(直接插入) O(n) O(n^2) O(n^2) O(1)
    Select Sort(简单选择) O(n^2) O(n^2) O(n^2) O(1)
    Bubble Sort(冒泡) O(n^2) O(n^2) O(n^2) O(1)

    选择排序 和 交换排序:

    选择法基本思路与交换法大致相似,不同点是交换法在一轮中要 "比较交换多次",而选择法是一轮中比较多次,而"最多交换一次"

  • 相关阅读:
    Kudu vs HBase
    数据分析怎么更直观?十分钟构建数据看板
    The Beam Model:Stream & Tables翻译(上)
    3分钟掌握一个有数小技能:收入贡献分析
    猛犸机器学习开发实践
    SparkSQL大数据实战:揭开Join的神秘面纱
    细说Mammut大数据系统测试环境Docker迁移之路
    python中的闭包与装饰器
    import详解
    python中的with与上下文管理器
  • 原文地址:https://www.cnblogs.com/pengnima/p/12626431.html
Copyright © 2011-2022 走看看