排序一| 排序的概念、分类、性能分析(复杂度)

排序

排序(sorting)的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。其确切的定义为:假设有n个数据元素的序列{R1 , R2 , … , Rn},其相应关键字的序列是{K1 , K2 , … , Kn},通过排序要求找出下标 1 , 2 , … , n的一种排列p1 , p2 , … , pn,使得相应关键字满足如下的非递减(或非递增)关系 Kp1 ≤ Kp2 ≤ … ≤ Kpn 这样,就得到一个按关键字有序的纪录序列:{ Rp1 , Rp2 , … , Rpn }。

数据元素数量的不同,使得排序过程中涉及的存储器不同,可以将排序方法分为两类。一类是整个排序过程在内存储器中进行,称为内部排序;另一类是由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成,这类排序称为外部排序

如果在待排序的序列中存在多个具有相同关键字的元素。假设Ki=Kj(1≤ i≤ n,1≤ j≤ n,i≠j),若在排序之前的序列中Ri在Rj之前,经过排序后得到的序列中Ri仍然在Rj之前,则称所用的排序方法是稳定;否则,当相同关键字元素的前后关系在排序中发生变化,则称所用的排序方法是不稳定

无论是稳定的还是不稳定的排序方法,均能完成排序的功能。在某些场合可能对排序有稳定性的要求,此时就应当选择稳定的排序方法。例如,假设一组学生纪录已经按照学号有序,现在需要根据学生的成绩排序,当分数相同时要求学号小的学生在前,显然此时对分数
进行排序就必须选择稳定的排序方法

通常,在排序的过程中需要进行两种基本操作:⑴比较两个关键字的大小;⑵将一个关键字从一个位置移动到另一个位置。第一种操作对大多数排序方法来说都是必要的,而后一种操作可以通过改变记录的存储方式来予以避免。内部排序的方法很多,但是很难说哪一种内部排序方法最好,每一种方法都有各自的优缺点,适合于不同的环境下使用。如果按照排序过程中依据的原则对内部排序进行分类,则
大致上可以分为插入排序、交换排序、选择排序、归并排序等排序方法。

分类

排序算法按照类型可以分为插入排序选择排序交换排序归并排序等几大类。其中:

插入排序:直接插入排序、折半插入排序(二分插入排序)、希尔排序

选择排序:简单选择排序、树形选择排序、堆排序

更详细的分类如下图所示:

排序算法分类

各类排序算法的性能比较如下:

各类排序算法性能比较

 

时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值