LeetCode基础-排序
2017-10-31 08:33
211 查看
排序是最基本也是最常用的算法之一。
常用的几个排序算法是:
排序
– 冒泡排序
– 插入排序
– 选择排序
– 合并排序
– 堆排序
– 快速排序
这些排序算法的基本性质和特点如下:
冒泡排序,插入排序,选择排序的平均时间复杂度都是:O(n2)
合并排序,堆排序,快速排序的平均时间复杂度都是:O(n*log2n)
冒泡排序,插入排序,选择排序的空间复杂度都是:O(1)
合并排序的空间复杂度是:O(n),(占用空间较多)
堆排序的空间复杂度是:O(1)
快速排序的空间复杂度是:O(log2n)~O(n)
冒泡排序,插入排序 是稳定的排序算法。
选择排序 是不稳定的排序算法。
堆排序,快速排序 是不稳定的排序算法。
堆排序 是不稳定的排序算法。
注:是否稳定指的是排序过程中重复值的相对位置是否改变。
应用题:
调度,
负载均衡,
逆域名排序,
垃圾邮件大战
公正的选举,
计算Kendall tau 距离,
空闲时间,
多维排序,
股票交易,
简单多边形,
文件名排序,
常用的几个排序算法是:
排序
– 冒泡排序
– 插入排序
– 选择排序
– 合并排序
– 堆排序
– 快速排序
这些排序算法的基本性质和特点如下:
冒泡排序,插入排序,选择排序的平均时间复杂度都是:O(n2)
合并排序,堆排序,快速排序的平均时间复杂度都是:O(n*log2n)
冒泡排序,插入排序,选择排序的空间复杂度都是:O(1)
合并排序的空间复杂度是:O(n),(占用空间较多)
堆排序的空间复杂度是:O(1)
快速排序的空间复杂度是:O(log2n)~O(n)
冒泡排序,插入排序 是稳定的排序算法。
选择排序 是不稳定的排序算法。
堆排序,快速排序 是不稳定的排序算法。
堆排序 是不稳定的排序算法。
注:是否稳定指的是排序过程中重复值的相对位置是否改变。
应用题:
调度,
负载均衡,
逆域名排序,
垃圾邮件大战
公正的选举,
计算Kendall tau 距离,
空闲时间,
多维排序,
股票交易,
简单多边形,
文件名排序,
相关文章推荐
- LeetCode基础-排序-选择排序
- LeetCode基础-排序-二叉堆排序(优先队列)
- LeetCode基础-排序-插入排序
- LeetCode基础-排序-快速排序
- LeetCode基础-排序-合并排序
- LeetCode基础-查找-排序数组二分查找
- Java数据结构-基础排序
- LeetCode Merge Sorted Array 合并已排序的数组
- 蓝桥杯:基础练习 数列排序
- LeetCode基础--Union Find(Disjoint Set)
- leetcode之链表类之链表排序-----147/148. 链表快速排序 链表插入排序
- 黑马程序员——Java基础 数组排序的两种实现方法,选择和冒泡
- [LeetCode]100. Remove Duplicates from Sorted Array II排序数组去重
- 基础数据结构与算法之非比较排序一:计数排序
- LeetCode Sort Colors(排序)
- php四种基础排序(基础算法)----①冒泡排序法
- 基础算法之快速排序
- 数据结构和算法11 之基础排序
- Leetcode 148 Sort List 单链表排序
- 算法基础之排序篇-冒泡排序