首页 > 编程语言 > 详细

排序——排序的基本概念

时间:2019-05-25 22:01:52      阅读:168      评论:0      收藏:0      [点我收藏+]

1,排序的一般定义:

       1,排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素;

       2,无序到有序就是排序;

      

2,排序的数学定义:

       1,假设含 n 个数据元素序列为{R1, R2, ..., Rn}, 其相应的关键字序列为 {K1, K2, ..., Kn},这些关键字相互之间可以进行比较,即:在它们之间存在着这样一个关系  Kp1 <= Kp2 <= ... <= Kpn,  按此固有关系将上式记录序列重新排列为  {Rp1, Rp2, ..., Rpn}的操作称为排序。

         

3,排序的稳定性:

       1,如果在序列中有两个数据元素 r[i] 和 r[j],它们的关键字 k[i] == k[j],且在排序之前,对象 r[i] 排在 r[j] 前面;如果在排序之后,对象 r[i] 仍在对象 r[j] 的前面,则称这个排序方法是稳定的,否则称这个排序方法是不稳定的;

             

4,多关键字排序:

       1,排序时需要比较的关键字多于一个:

              1,排序结果首先按关键字 1 进行排序;

              2,当关键字 1 相同时按关键字 2 进行排序;

              3,当关键字 n - 1 相同时按关键字 n 进行排序;

          (4),关键字之间有优先级;

             

5,多关键字排序是否比单关键字排序更复杂?

       1,对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可;

       2,只要定义好了大小关系,就排序算法而言,多关键字排序和单关键字排序本质没有任何差异;

       3,后续课程只考虑单关键字排序;

      

6,多关键字比较的代码实现:

       1,利用短路原则;

             技术分享图片

      

7,排序中的关键操作:

       1,比价:

              1,任意两个数据元素通过比较操作确定先后次序;

       2,交换:

              1,数据元素之间需要交换才能得到预期效果(无序变有序);

             

8,排序的审判:

       1,时间性能:

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

       2,辅助存储空间:

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

                     1,嵌入式开发,空间资源受限;

              2,必要时可以“空间换时间”;

       3,算法的实现复杂性:

              1,过于复杂的排序法可能影响可读性和可维护性;

             

9,DTLib 中的排序类设计:

技术分享图片 

       1,定义排序类,类中实现常用的各种各样排序方法,项目中直接只用类的成员函数就可以排序;

       2,排序类继承自 Object;

       3,构造函数、拷贝构造函数以及赋值操作符全部定义为私有的,排序类不可能有对象;

       4,将不同排序方法实现为类的静态成员函数来使用;

 

10,小结:

       1,排序是数据元素从无序到有序的过程;

       2,排序具有稳定性,是选择排序算法的(主要)因素之一;

       3,比较和交换是排序的基本操作;

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

              1,比较没本质区别,所以排序也没本质区别;

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

排序——排序的基本概念

原文:https://www.cnblogs.com/dishengAndziyu/p/10923866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!