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

    1.

      排序算法是将一串数据按照某种特定排序方式(规则)进行排序的算法。分为内部排序和外部排序。

      内部排序:指排序数据存储在内存中,依照依照某种排序方式(规则)进行排序。内部排序不适合太大的数据。内部排序的八中排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序、基数排序。排序算法输出必须遵寻以下原则:

    1. 输出结果为递增序列(递增是针对所需的排序顺序而言)
    2. 输出结果是原输入的一种排列、或是重组

      外部排序是指大文件的排序,即待排序的数据存储在外部存储器中(硬盘),待排序的文件无法一次写入内存中,需要在内存和外部存储器之间进行一次或者多次的数据交互,以完成整个文件的排序。

    2. 分析

    • 冒泡排序 -- 时间复杂度 :O(n2)

        

    冒泡排序算法示意图 Bubble sort animation sort-0.1   

       冒泡排序算法的运作如下:

      1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
      2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
      3. 针对所有的元素重复以上的步骤,除了最后一个。
      4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
    • 选择排序 -- 时间复杂度 :O(n2)

      

    选择排序算法示意图 Bubble sort animation sort-0.2    

        选择排序算法的运作如下:  

      1. 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
      2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
      3. 以此类推,直到所有元素均排序完毕

    插入排序 -- 时间复杂度 :O(n2)

    希尔排序 -- 时间复杂度 :O(n1.25)

    堆排序 -- 时间复杂度 :O(n log n)

    归并排序 -- 时间复杂度 :O(n log n)

    快速排序 -- 时间复杂度 :O(n log n)

    基数排序 -- 时间复杂度 :O(n)

  • 相关阅读:
    Springboot框架添加防止XSS攻击功能
    mybatis传入参数为0被误认为是空字符串的解决方法
    js 遇到 Permission denied to access property ***
    SpringBoot 实现App第三方微信登录
    RedisTemplate和StringRedisTemplate的使用导致数据不一致
    mybatis传入值为null时提示无效的列类型
    Oracle批量插入sql和Mysql大不一样
    SSM+Oracle自动生成uuid作为主键
    mysql5.7创建用户 分配权限
    R语言统计分析-方差分析
  • 原文地址:https://www.cnblogs.com/naray/p/4081393.html
Copyright © 2011-2022 走看看