总结一下我复习过的算法和mysql

1.数据结构分类

  • 集合关系:简单的集中在一起
  • 线性结构:一对一的关系
  • 树形结构:一对多的层级关系
  • 图形结构:多对多的关系

2.什么是链表数据结构?
一个元素,他会存一个指针指向相邻元素的地址。
分双向和单向 链表
双向链表:存了下一个元素的地址还有上一位的地址。

比如:mysql的叶子节点就用的链表结构,叶子节点存的是数据。

3.跳表的算法复杂度是多少?为什么?
跳跃表是一种随机化的数据结构,在查找,插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(logn)平均时间

基于有序单链表,在链表的基础上,每个节点不只包含一个指针,还可能包含多个指向后继节点的指针,这样就可以跳过一些不必要的节点,从而加快查找,删除等操作。传统的单链表是一个线性结构,向有序的链表插入,查找一个结点需要O(n)的时间,如果使用跳跃表,就可以减少查找所需的时间。
在这里插入图片描述

4.跳表用在哪里?
redis的有序集合用到了跳表。(有点像范围,像树的结构)

5.链表用在哪里?
mysql limit 2,4 其实2需要扫描,但是4不需要扫描&#x

你可能感兴趣的:(面试)