• 数据结构


    1、红黑树:

    是一种自平衡的二叉树,

    1. 每个节点都有红色或黑色
    2. 树的根始终是黑色的 (黑土地孕育黑树根, )
    3. 没有两个相邻的红色节点(红色节点不能有红色父节点或红色子节点,并没有说不能出现连续的黑色节点)
    4. 从节点(包括根)到其任何后代NULL节点(叶子结点下方挂的两个空节点,并且认为他们是黑色的)的每条路径都具有相同数量的黑色节点

    瞬间懵逼?了解一下印象就行,开始玩魔方都是要照着魔方公式一点点玩的,多玩几次就熟悉了。红黑树也一样,红黑树有两大操作:

      1. recolor (重新标记黑色或红色)
      2. rotation (旋转,这是树达到平衡的关键)

    时间复杂度O(logN) 查找、插入、删除

    平衡二叉树是左边子节点比父节点小,右边子节点比父节点大,左节点深度和右节点深度相同,或者右节点深度跟左节点深度相差1,比较严苛,需要不断的变化,使得二叉树平衡,损坏性能CPU。

    红黑树是相对宽松的平衡二叉树,最差情况下,右节点深度跟左节点深度相差2倍

    红黑树,超强动静图详解,简单易懂 - 知乎 (zhihu.com)

    2、java集合容器

    ConcurrentHashMap

    3、排序算法

    常见的排序算法——常见的10种排序 - sc_FlyingDreams - 博客园 (cnblogs.com)

    冒泡排序

      每轮依次比较相邻数字的大小,将大数字向后移动,最终达到有序状态。

    选择排序

      每轮比较将当前值与未排序的值依次比较,找出最小的值,将其与当前值交换,达到有序状态

    插入排序

      依次遍历数组,每次将当前值插入已经排好序的数组中,最终达到有序状态。

    希尔排序

      将整个数组划分为不同的组,一般以n/2的对应划分,将所有组中的元素分别进行插入排序,  排好序后再次以,(n/2)/2,....1的划分并排序,最终达到有序。

    归并排序

      将数组划分为不同的组,依次对所有的组排序,最后再对排好序的组进行合并,采用了递归的思想,可以自顶向下及自底向上

    快速排序

      将数组根据某一数值划分为两个独立部分,一部分比关键字小,一部分比关键字大,然后再分别对这两部分进行排列,达到整个序列有序。 

    堆排序

      将数组元素组织为堆的结构,包括大顶堆及小顶堆,依次取出头部元素,调整堆结构,最终达到有序。

    计数排序

      要求输入元素是确定范围且范围较小的,分配最大值与最小值之差的大小的空间,将出现的数字放入指定位置,如果重复则加1.放完后取出就有序了

    桶排序

      计数排序升级版,最好应用于均匀分布的数据,将数据分配到有限数量的桶中,单个桶再排序,如果数据都进了一个桶中,排序就基本没有用了。

    基数排序

      利用数字的位数,先按地位数字,将数组元素放入10个桶中,这样最后一位就拍好了,在取出,按次低位进行排序,在取出,值到最高位,再取出就有序了。

     

  • 相关阅读:
    SpringMVC中@Controller和@RequestMapping用法和其他常用注解
    eclipse maven install 时控制台乱码问题解决
    使用模板实现编译期间多态(类名当参数)
    QT中Dialog的使用(使用QStackedWidget维护页面切换)
    QT中的各种对话框
    Qt 5 最小构建笔记(只编译QtBase)
    忽然懂了:“视图”的用途不仅仅是临时表,更适用于变化比较大的情况,而且不用改客户端一行代码
    React-Native
    一位OWin服务器新成员TinyFox
    Access Toke调用受保护的API
  • 原文地址:https://www.cnblogs.com/baldprogrammer/p/14035871.html
Copyright © 2020-2023  润新知