排序算法
文章平均质量分 54
常用的冒泡排序,插入排序,选择排序,希尔排序,快速排序等原理简单高效梳理
成豆o((⊙﹏⊙))o.
这个作者很懒,什么都没留下…
展开
-
通过parentId父节点对树形结构数据排序,类似部门层级排序,同级别遍历,附java实现代码
背景现有公司部门数据,通过parentId进行存储,类似与树形结构,现有业务单据中的某个属性,匹配到部门中有该属性的部门内的员工处理,但由于部门中该属性可能重复,按照业务要求,需要等级高的部门优先处理,所以涉及到对部门进行排序。该文章仅为自己记录,各位如果有类似的需求也可以参考。基础数据部门图部门图如上所示,红色为一级部门,一级部门有3个(其实也可以在上面建议一个公司,这样就是一棵完整的树,现在我们不这样做,难度会稍稍大那么一丢丢),黄色是二级部门,绿色是三级部门,蓝色是四级部门。需求原创 2021-06-05 21:53:25 · 2622 阅读 · 1 评论 -
高效理解排序之——希尔排序-含JAVA代码(简洁明了,非无脑COPY)
前言选择排序(Shell Sort),与1959年由Shell提出,首次打破了之前普遍认为算法的时间复杂度无法超过O()的认知,该算法以Shell命名也是其因得的荣誉。还记得之前说的插入排序吗?就是那个扑克牌算法,模糊的话可以复习一下插入排序(扑克牌算法)。如果插入排序的大部分元素都是比较有序的情况下,插入排序的实际移动位置会比较小,这个时候的效率也是比较高的。本章的希尔排序也就是利用这种特性,利用分组将元素尽量拍的有序一点。我自己也给它起了另外一个名字:分组插入排序法(对不起希尔老爷子了????)原创 2020-12-03 00:41:25 · 185 阅读 · 0 评论 -
高效理解排序之——选择排序-含JAVA代码(简洁明了,非无脑COPY)
前言选择排序(Selection Sort),(从小到大的排序)每次选择一个最值放入第一个位置,个人认为原理比冒泡排序的原理更好理解。基本思路在所有的元素中选择一个最小的元素,与第一个位置的元素交换位置。 在剩下的元素中选择一个最小的元素与第二个元素交换位置。 重复...(如果上面的思路描述你没看懂也没关系,看下面的图解)图解第一轮:在6个元素中找到最小的元素1,与第一个位置的元素交换位置如何找出最小的元素?第一个元素与相邻的后一个元素比较大小(2<3)。找出两者中原创 2020-12-01 00:27:40 · 169 阅读 · 0 评论 -
高效理解排序之——插入排序-含JAVA代码(简洁明了,非无脑COPY)
前言插入排序(Insertion Sort)大家应该都玩过扑克牌斗地主(不是欢乐斗地主啊),最喜欢除了炸弹外就是5张以上的顺子了(我们家乡话叫链子)。在每起一张牌的时候你总是能够准确的插入到一个有顺序的位置,这种按牌的大小插入到一个有序的序列中就是插入排序的思想。基本思路默认第一个元素就是有序的,选择第二个元素与第一个元素比较,第二个元素小于第一个元素就与之交 换位置。这样前面两个元素就是有序的了。 用第三个元素依次与前面二个有序的元素比较。如果小于之前的元素就交换位置,这样前面三个元素原创 2020-11-28 00:29:36 · 130 阅读 · 0 评论 -
高效理解排序之——冒泡排序-含JAVA实现(简洁明了,非无脑COPY)
前言冒泡排序(Bubble Sort),像水底的气泡一样不断往上冒,谁的能量大谁就最出人头地。基本思路(从小到大)从第一个元素开始与相邻的下一个元素比较大小,如果元素大于下一个相邻的元素就交换位置;接着从第二个元素开始向下一个元素开始比较,如果...(如果上面的文字你没看懂也没关系,看下面的图解)图解...原创 2020-11-27 00:17:45 · 179 阅读 · 0 评论