排序
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 · 129 阅读 · 0 评论 -
插入排序
插入排序:时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2)空间复杂度:没有使用额外的空间,所以空间复杂度为O(1)原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。稳定排序算法:在排序的时候,如果遇到前后相等的元素就不互换位置,就可以做到顺序不改变,所以是稳定排序算法。package cm.co...原创 2019-06-05 21:23:44 · 127 阅读 · 0 评论 -
选择排序
选择排序:时间复杂度:因为需要两次循环,每一次循环的复杂度都为n,所以总的时间负责度为O(n^2)空间复杂度:没有使用额外的空间,所以空间复杂度为O(1)原地排序算法:因为空间复杂度为O(1),没有占用额外的空间来排序,所以是原地排序算法。稳定排序算法:5,8,5,2,5,9 这样的就会乱序。所以是非稳定排序算法。因为不能保证相等元素的排序顺序和原来保持一致。pac...原创 2019-06-05 21:39:14 · 136 阅读 · 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=aladdinpackage cm.com.algorithm;/*...原创 2019-06-06 14:03:52 · 162 阅读 · 0 评论 -
归并排序
归并排序:时间复杂度:时间复杂度主要取决于合并的时间。是n*log(n)空间复杂度:在合并的时候,使用了额外的数组存储排序结果,所以空间复杂度不是O(1)原地排序算法:不是原地排序算法。稳定排序算法:在排序的时候,前后大小相等的元素,先排前边数组的元素,就可以保证排序的稳定性。时间复杂度推导方法:T(n) = 2*T(n/2) + n = 4*T(n/4) + ...原创 2019-06-08 17:27:28 · 116 阅读 · 0 评论 -
堆排序
原文:https://time.geekbang.org/column/article/69913 原文是极客时间,的数据结构与算法课程。整片文章感觉有抄袭的嫌疑,哈哈哈,不过感觉这个图的确是比文字或者别的更形象和有说服力。1.堆的定义:堆满足的两个必要条件:堆是一个完全二叉树。 堆中的每个节点的值都必须大于等于(或者小于等于)其子树的每个节点的值。对于每个节点的值都...原创 2019-06-14 20:43:32 · 308 阅读 · 0 评论 -
快速排序
快速排序:时间复杂度:时间复杂度主要取决于每次拆分的时间。是n*log(n)空间复杂度:在合并的时候,没有使用额外的存储空间,所以时间复杂度是O(1)原地排序算法:是原地排序算法。稳定排序算法:在排序的时候,前后大小相等的元素,不能保证排序后的顺序一致。如果从前往后排,则比中间值大的元素不能确保顺序一致,如果从后往前排,则比中间值小的元素不能确保顺序。时间复杂度计...原创 2019-06-10 20:21:11 · 140 阅读 · 0 评论