• 数据结构常见问题合集


    面筋分类汇总-测开向

    排序算法的复杂度、稳定性、内部外部排序

    • 快排的时间复杂度(NlogN)、最坏情况(N^2)

    • 快速排序:

      • 首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟快速排序。
      • 快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

    基础数据结构

    • 数组和链表的区别

      • 数据中数组的内存是顺序存储的,而链表是随机存取的。
      • 数组随机访问效率很高,但插入删除操作的效率比较低。
      • 链表在插入删除操作上相对数组有很高的效率,而如果访问链表中的某个元素,那就要从表头逐个遍历,直到找到所需要的元素为止,所以链表的随机访问效率比数组低。
      • 链表不存在越界问题,数组有越界问题。
      • 数组节省空间但是长度固定。链表虽然变长,但是占了更多的存储空间。
      • 静态)数组从栈中分配内存空间,对于程序员方便快速,但是自由度小。链表从堆中分配空间,自由度大,但申请管理比较麻烦。
    • 数据结构上的堆和栈有什么区别、底层结构是什么

      • 1.栈内存存储的是局部变量,基本类型的变量表示的是数据本身;而堆内存存储的是实体,每个实体对象都有地址值和默认初始化值;
      • 2.栈内存的读取和更新速度要快于堆内存,因为局部变量的生命周期很短;
      • 3.栈内存使用一级缓存,存放的变量生命周期一旦结束就会被释放;而堆内存使用二级缓存,存放的实体会被垃圾回收机制不定时的回收。

    索引提到了B树
    树是用什么存储的,可不可以用数组存储
    红黑树
    最大的K个数用什么排序算法,复杂度、同样是NlogN, 快排和堆排序有什么区别。

    END

  • 相关阅读:
    Redis
    Ajax和JSON
    快速幂
    欧拉函数
    约数
    质数
    二分图相关算法模板
    最小生成树模板
    最短路算法模板
    康托展开和逆康托展开
  • 原文地址:https://www.cnblogs.com/anliux/p/12603757.html
Copyright © 2020-2023  润新知