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)

  • 相关阅读:
    SimpleDateFormat解析的时区问题
    linux之cp/scp命令+scp命令详解
    java.net.SocketException: java.security.NoSuchAlgorithmException
    Gradle使用手册(一):为什么要用Gradle?
    js_实用
    exp.validate.js
    MySQL实用技巧
    MongoDB 用户配置
    js 图片处理 Jcrop.js API
    MySQL连接池
  • 原文地址:https://www.cnblogs.com/naray/p/4081393.html
Copyright © 2011-2022 走看看