春招数据结构相关问题总结(更新ing~)

1.说一说快排的基本思路以及最坏时间复杂度?
2.B树和B+树差异
3.说一说字符串匹配(KMP算法)?
4.排序算法、归并复杂度
5.BFS、DFS
6.平衡二叉树的概念?你遇到过哪些使用场景?
7.栈溢出攻击
8.寻找两条链表相交的结点
9.数组和二叉树的区别
10.了解什么是栈溢出吗?
答:

栈溢出是常见的安全漏洞。一方面因为程序员的疏忽使用了strcpy、sprintf等不安全的函数增加了栈溢出的可能性,另一方面栈上保存了函数的返回地址等信息,如果攻击者能覆盖栈上的数据,就能修改程序执行的流程,从而制造破坏。

11.堆和栈有什么区别?
12.请说一下冒泡排序的原理,最好和最坏情况分别是什么?
答:冒泡排序的原理是对待排数组进行循环遍历,每次从最左端开始依次比较左右相邻两个元素的大小,若大小顺序颠倒则进行交换,每次遍历结束都会将待排序中的最大或最小的元素放到正确的位置上,如此循环n-1次后即可使整个数组有序。
最好情况是原本数组就有序,只需要进行遍历一次,此时时间复杂度为O(N)
最坏情况是数组是逆序的,需要比较n(n-1)/2次,此时时间复杂度为O(N^2)

13.请说一下插入排序的原理?
答:把数组分成两部分,一部分是第一个元素认为是有序序列,另一部分是其余元素认为是待排序列,每次进行比较将该元素插入到合适的地方,也就是比左边元素大,比右边元素小的位置,如果相同插入到相同元素的后面,防止影响稳定性,最终实现整体有序。平均时间复杂度O(N^2)

14.了解希尔排序吗?
希尔排序是选择一个增量将数组整体分为若干个部分,对每个部分进行插入排序,对增量进行递减操作重复上述步骤最终达到基本有序。n较小时为O(N^2) N较大时为O(NlogN)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z小脏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值