
排序
Memorys.Liu
it's bad but not too bad.
展开
-
冒泡排序
冒泡排序: 时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2) 空间复杂度:没有使用额外的空间,所以空间复杂度为O(1) 原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。 稳定排序算法:在排序的时候,如果遇到前后相等的元素就不互换位置,就可以做到顺序不改变,所以是稳定排序算法。 package cm.co...原创 2019-06-05 17:58:51 · 145 阅读 · 0 评论 -
插入排序
插入排序: 时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2) 空间复杂度:没有使用额外的空间,所以空间复杂度为O(1) 原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。 稳定排序算法:在排序的时候,如果遇到前后相等的元素就不互换位置,就可以做到顺序不改变,所以是稳定排序算法。 package cm.co...原创 2019-06-05 21:23:44 · 137 阅读 · 0 评论 -
选择排序
选择排序: 时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2) 空间复杂度:没有使用额外的空间,所以空间复杂度为O(1) 原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。 稳定排序算法:5,8,5,2,5,9 这样的就会乱序。所以是非稳定排序算法。因为不能保证相等元素的排序顺序和原来保持一致。 pac...原创 2019-06-05 21:39:14 · 146 阅读 · 0 评论 -
希尔排序
希尔排序: 时间复杂度:O(n^(1.3—2)) 空间复杂度:O(1),原地排序算法 稳定性:不是稳定的排序算法。 相关介绍感觉百度百科介绍挺好的。见:https://baike.baidu.com/item/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/3229428?fr=aladdin package cm.com.algorithm; /*...原创 2019-06-06 14:03:52 · 180 阅读 · 0 评论 -
归并排序
归并排序: 时间复杂度:时间复杂度主要取决于合并的时间。是n*log(n) 空间复杂度:在合并的时候,使用了额外的数组存储排序结果,所以空间复杂度不是O(1) 原地排序算法:不是原地排序算法。 稳定排序算法:在排序的时候,前后大小相等的元素,先排前边数组的元素,就可以保证排序的稳定性。 时间复杂度推导方法: T(n) = 2*T(n/2) + n = 4*T(n/4) + ...原创 2019-06-08 17:27:28 · 125 阅读 · 0 评论 -
堆排序
原文:https://time.geekbang.org/column/article/69913 原文是极客时间,的数据结构与算法课程。 整片文章感觉有抄袭的嫌疑,哈哈哈,不过感觉这个图的确是比文字或者别的更形象和有说服力。 1.堆的定义: 堆满足的两个必要条件: 堆是一个完全二叉树。 堆中的每个节点的值都必须大于等于(或者小于等于)其子树的每个节点的值。 对于每个节点的值都...原创 2019-06-14 20:43:32 · 348 阅读 · 0 评论 -
快速排序
快速排序: 时间复杂度:时间复杂度主要取决于每次拆分的时间。是n*log(n) 空间复杂度:在合并的时候,没有使用额外的存储空间,所以时间复杂度是O(1) 原地排序算法:是原地排序算法。 稳定排序算法:在排序的时候,前后大小相等的元素,不能保证排序后的顺序一致。 如果从前往后排,则比中间值大的元素不能确保顺序一致, 如果从后往前排,则比中间值小的元素不能确保顺序。 时间复杂度计...原创 2019-06-10 20:21:11 · 153 阅读 · 0 评论