数据结构常见问题合集

面筋分类汇总-测开向

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

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

  • 快速排序:

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

基础数据结构

  • 数组和链表的区别

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

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

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

END

posted @ 2020-03-31 11:05  anliux  阅读(1341)  评论(0编辑  收藏  举报