![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 96
1)插入排序(直接插入排序、希尔排序)。
2)交换排序(冒泡排序、快速排序)。
3)选择排序(直接选择排序、堆排序)。
4)归并排序。
5)分配排序(箱排序、基数排序)。
孔子-说
成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!
屡战屡败,屡败屡战
失败是我无奈的宿命
坚韧是我不屈的灵魂
展开
-
红黑树介绍
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] 如果一个节点是红色的,则它的子节点必须是黑色的...转载 2019-11-01 10:55:44 · 247 阅读 · 0 评论 -
平衡二叉树的实现之AVL树
对于二叉查找树,树的层数(深度)越少,查找数据的平均查找时间就会越少。二叉排序树在很多情况下都不能保证树的高度是最优的,例如在极端情况,如果插入排序树的数据是有序的,那么二叉树就会退化成为单链,这时查找的时间复杂度也退化成O(n)的了。为了解决这个问题,我们希望二叉树是尽量平衡的,也就是说对于树中的任意一个结点,都能使其左子树上结点的个数和右子树上结点的个数相差不太多。有两种不同的二叉平衡树,分别...原创 2019-10-31 11:45:02 · 165 阅读 · 0 评论 -
二叉排序树
首先二叉排序树也是一棵二叉树,所谓二叉树,就是“任何节点最多只允许两个子节点”,这两个子节点称为左右子节点。如下便是一个二叉树。二叉排序树性质1、就是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2、若它的右子树不空,则右子树上所有节点的值均大于其根节点的值。3、换句话说就是:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每一个节点的键...原创 2019-10-30 16:37:59 · 646 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
算法复杂度表示方法描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 它们代表的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。大O加上()的形式,里面其实包裹的是一个函f(),O(f()),指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。注:logn -对数函数...原创 2019-10-30 14:53:15 · 1024 阅读 · 0 评论 -
稳定排序和不稳定排序分析
稳定性通俗地讲就是能保证排序前2个相等的数,其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。稳定性的好处排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不...原创 2019-10-30 14:50:50 · 352 阅读 · 1 评论 -
java排序算法之计数排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-30 14:41:22 · 329 阅读 · 0 评论 -
java排序算法之桶排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-30 13:28:11 · 269 阅读 · 0 评论 -
java排序算法之基数排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-30 11:35:18 · 287 阅读 · 0 评论 -
java排序算法之归并排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-30 10:35:24 · 173 阅读 · 0 评论 -
java排序算法之希尔排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-29 17:24:13 · 246 阅读 · 0 评论 -
java排序算法之直接插入排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-29 14:47:32 · 225 阅读 · 0 评论 -
java排序算法之堆排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-29 11:40:29 · 190 阅读 · 0 评论 -
java排序算法之简单选择排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-28 18:07:38 · 340 阅读 · 0 评论 -
java排序算法之快速排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-28 17:20:52 · 365 阅读 · 0 评论 -
java排序算法之冒泡排序
一、排序算法概述常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。选择排序算法的依据:任何排序算法在数据量小的时候基本体现不出来差距。选择依据有 1.数...原创 2019-10-28 16:14:23 · 180 阅读 · 0 评论