zoukankan      html  css  js  c++  java
  • 排序一:排序的概念及分类

    一般定义:将一组“无序”的数据元素调整为“有序”的数据元素。
    数学定义:假设含n个数据元素的序列为{R1,R2,...,Rn},其相应的关键字序列为{K1,K2,...,Kn},这些关键字相互之间可以进行比较,即在它们之间存在这样的关系:

        

      按此固有关系将上式记录序列重新排序为:

        

      的操作称为排序

    排序的稳定性

      

      稳定排序示例:

                         

    多关键字排序

      排序时需要比较的关键字多余一个。

    • 排序时首先按照关键字1进行排序
    • 当关键字1相同时按照关键字2进行排序
    • ......
    • 当关键字n-1相同时,按照关键字n进行排序      

      示例:

                         

    排序中的关键操作

    1. 比较:任意两个数据元素通过比较确定先后顺序

    2. 交换:数据元素之间需要交换才能得到预期的结果

    内排序和外排序

    1. 内排序:整个排序过程不需要访问外存便能完成。

    2. 外排序:待排序的数据元素数量很大,整个序列的排序过程不可能在内存中完成。

    排序的审判

    1. 时间性能:

      关键性能差异体现在比较和交换的数量

    2. 辅助空间性能:

      为完成排序操作需要的额外的存储空间

      必要时可以“空间换时间”

    3. 算法的实现复杂性:

      过于复杂的排序算法会影响代码的可读性和可维护性,也可能影响排序的性能

    小结:

    1. 排序时数据元素从无序到有序的过程

    2. 排序具有稳定性,是选择排序算法的因素之一

    3. 比较和交换时排序的基本操作

    4. 多关键字排序与单关键字排序无本质区别

    5. 排序的时间性能是区分排序算法好坏的主要因素

  • 相关阅读:
    前沿技术解密——VirtualDOM
    Ques核心思想——CSS Namespace
    Unix Pipes to Javascript Pipes
    Road to the future——伪MVVM库Q.js
    聊聊CSS postproccessors
    【译】十款性能最佳的压缩算法
    Kafka Streams开发入门(9)
    Kafka Streams开发入门(8)
    【译】Kafka Producer Sticky Partitioner
    【译】99th Percentile Latency at Scale with Apache Kafka
  • 原文地址:https://www.cnblogs.com/ronnydm/p/5800977.html
Copyright © 2011-2022 走看看