数据结构之排序(概念)

1.1 什么是排序

排序是程序开发中的一种非常常见的操作,对一组任意数据元素(或记录)经过指定关键字排序排序操作后,就可以吧它们变为一组按照关键字排序的有序序列。
通常排序的目的是快速查找。

1.2衡量指标

对于一个排序算法来说,一般从以下3个方面来衡量算法的优劣:

  • 排序算法的执行消耗
  • 排序算法的内存消耗
  • 排序算法的稳定性

1.2.1 排序算法的执行效率

对于排序算法的执行效率的分析,一般会从以下几个方面来衡量:

  1. 最好情况、最坏情况、平均情况时间复杂度
  2. 时间复杂度的系数、常数、低阶
  3. 比较次数和交换次数

1.2.2 排序算法的内存消耗

算法的内存消耗可以通过空间复杂度来衡量,排序算法也不例外。

针对排序算法的时间复杂度,还有一种排序为:原地排序。
原地排序算法,就是特指空间复杂度为O(1)的算法。

1.2.3 排序算法的稳定性

针对排序算法,我们还有一个重要的衡量指标:稳定性。
稳定性指:待排序的序列中存在值相等的元素,经过排序之后,相等元素之间的原有先后顺序不变。

例如:
有一组数据:2,9,3,4,8,3
按照大小排序之后就是:2,3,3,4,8,9
这组数据中有俩个3,经过某种排序算法之后,如果俩个3的前后顺序没有改变,那么这种排序算法就叫做稳定的排序算法;如果俩个3的前后顺序发生了变化,那么对应的算法称为不稳定算法。

1.3排序分类

根据现有的排序算法来看,排序大致分为俩类:

  • 内部排序:如果整个排序过程不需要借助外部存储器(如磁盘),所有的排序操作都是在内存中完成,这种排序称之为内部排序
  • 外部排序:如果参与排序的数据元素非常多,数据非常大,计算机无法把整个排序过程放在内存中完成,必须借助外部存储器(如磁盘),这种排序称之为外部排序

2.常见的排序算法在这里插入图片描述

将这些常见的排序算法按照时间复杂度可以大致分为三类:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值