排序算法
2016-04-04 15:03
351 查看
1. 归并排序,时间复杂度是O(NlogN)
基本思想是将已经排序好的子序列做排序,归并为一个有序的大序列。(分治算法)。
2. 排序的稳定性:
一般说,如果排序过程中,只有相邻元素进行比较,是稳定的,如冒泡排序、归并排序(可以算作相邻元素比较);如果间隔元素进行比较,往往是非稳定的,如堆排序、快速排序。直接插入排序是稳定的;但是二分插入排序本身不稳定,如果要稳定,需要向后探测。对于不稳定排序可以使用(A[i],i)键对来进行算法,使得不稳定排序变为稳定排序。
3. 桶排序/基数排序
将元素分到若干个桶中,每个桶分别排序,然后归并
4. 计数排序,时间复杂度为O(N)。空间复杂度为O(N+K)
用空间换时间,本质是建立基于元素的hash表
建立一个辅助空间,记录每个原始数据出现的次数,然后转换成前N项和数组。从后往前遍历原始数组到存放排序结果的新数组中。
5. 排序分类:内排序/外排序
常见排序方法:
插入排序/希尔排序
选择排序/锦标赛排序/堆排序
冒泡排序/快速排序
归并排序
基数排序
6. 堆排序
最大、最小堆只是要求父子结点满足比较关系。
先写一个递归函数维护堆,能够处理的情况是有一个堆结点不满足最大堆(或最小堆)的性质。然后写一个创建堆函数,利用维护堆函数,从堆的最后结点的二分之一那个结点开始到结点1调用维护堆函数进行建堆,然后把堆的第一个结点和最后一个结点交换,取出排序好的序列,实现堆排序。(把堆的顶元素放在下标为1的数组元素中方便写程序)。
堆排序的时间复杂度是O(NlogN),
7. 快速排序是O(NlogN),
采用分治算法,选择一个值作为Key
--------------------------------
排序算法的不稳定性:
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
基本思想是将已经排序好的子序列做排序,归并为一个有序的大序列。(分治算法)。
2. 排序的稳定性:
一般说,如果排序过程中,只有相邻元素进行比较,是稳定的,如冒泡排序、归并排序(可以算作相邻元素比较);如果间隔元素进行比较,往往是非稳定的,如堆排序、快速排序。直接插入排序是稳定的;但是二分插入排序本身不稳定,如果要稳定,需要向后探测。对于不稳定排序可以使用(A[i],i)键对来进行算法,使得不稳定排序变为稳定排序。
3. 桶排序/基数排序
将元素分到若干个桶中,每个桶分别排序,然后归并
4. 计数排序,时间复杂度为O(N)。空间复杂度为O(N+K)
用空间换时间,本质是建立基于元素的hash表
建立一个辅助空间,记录每个原始数据出现的次数,然后转换成前N项和数组。从后往前遍历原始数组到存放排序结果的新数组中。
5. 排序分类:内排序/外排序
常见排序方法:
插入排序/希尔排序
选择排序/锦标赛排序/堆排序
冒泡排序/快速排序
归并排序
基数排序
6. 堆排序
最大、最小堆只是要求父子结点满足比较关系。
先写一个递归函数维护堆,能够处理的情况是有一个堆结点不满足最大堆(或最小堆)的性质。然后写一个创建堆函数,利用维护堆函数,从堆的最后结点的二分之一那个结点开始到结点1调用维护堆函数进行建堆,然后把堆的第一个结点和最后一个结点交换,取出排序好的序列,实现堆排序。(把堆的顶元素放在下标为1的数组元素中方便写程序)。
堆排序的时间复杂度是O(NlogN),
7. 快速排序是O(NlogN),
采用分治算法,选择一个值作为Key
--------------------------------
排序算法的不稳定性:
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
相关文章推荐
- poj之旅——3045
- Android Studio 生成jks密钥 和 Gradle 多渠道打包
- “代理服务器拒绝连接“问题
- [BZOJ3631][JLOI2014]松鼠的新家(链剖)
- VR游戏开发干货教程:如何创建一个VR项目
- JavaEE应用的分层模型和架构
- 论文笔记--人脸检测 DL
- bzoj 2005: [Noi2010] 能量采集
- 吃吃饭
- 吃吃饭
- 吃吃饭
- J2EE轻量级框架--4.01学习心得
- #ifdef __OBJC__ 宏定义的作用
- 解决 Qt 使用 PNG 图片时报错:libpng warning: iCCP: known incorrect sRGB profile
- 《leetCode》:Bitwise AND of Numbers Range
- InSAR学习(五)高级的InSAR技术:PS技术和SBAS技术
- 吃吃饭
- 005 ZeroMQ REQ-<ROUTER-ROUTER>-REQ 路由模式
- 第216期 辞退员工面谈有妙招 离职员工情绪管理不可少
- linux 编译ffmpeg 支持x264, x265