摘要: 学过上一篇文章的计数排序之后,特别是归约化分治处理的计数排序(适用于较离散的非负整数序列)。计数排序的局限比较多,在排序之前需要解决负数和小数的问题,而桶排序不需要考虑这些。 桶排序和计数排序一样,不受O(nlogn)时间复杂度下限的影响,它将待排序序列通过遍历方式分到有限数量的桶中,然后每个桶被单 阅读全文
posted @ 2020-01-27 14:46 我脱下短袖 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 我们知道快速排序的时间复杂度期望值是O(nlogn),其中O(logn)是利用了二分法进行远距离比较和交换元素的位置。如果不去做比较交换计算,有没有可能有一种算法,它的时间复杂度期望值能降低到O(n)线性时间呢? 我们可以有这样的思路,对于任何一个待排序数组的元素x,如果知道了待排序数组中有多少个元 阅读全文
posted @ 2020-01-27 14:44 我脱下短袖 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 归并排序的归并这两个字和递归没有关系,归并是将两个有序的数组归并成一个更大的有序数组,但整个排序算法是有可能跟递归有关系的。因为归并排序算法可以按照递归方式去解决,也可以按照迭代方式去解决。 递归方式是自顶向下的归并排序,迭代方式是自底向上的归并排序。这两种归并排序虽然实现方式不同,但是都是调用了核 阅读全文
posted @ 2020-01-27 14:40 我脱下短袖 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 基数排序和计数排序一样无需进行比较和交换,和桶排序一样利用分布和收集两种基本操作进行排序。基数排序是把每一个元素拆成多个关键字,一个关键字可以在每一个元素上同等的位置进行计数排序,一个元素拆成多个关键字可以看作是要进行几轮分桶,以一个元素最长的长度为准。 基数排序可以看成多(单)关键字的排序,可以想 阅读全文
posted @ 2020-01-27 11:12 我脱下短袖 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 二分搜索树又名有序二叉查找树,它有一个特点是左子树的节点值要小于父节点值,右子树的节点值要大于父节点值。基于这样的特点,我们在查找某个节点的时候,可以采取二分查找的思想快速找到这个节点,时间复杂度期望值是为O(log n),但是它有最坏的的情况下。 例如,输入数组[9,7,5,3,1],如果要满足二 阅读全文
posted @ 2020-01-27 10:57 我脱下短袖 阅读(490) 评论(0) 推荐(0) 编辑