1.什么是算法
在计算机领域内,算法是一系列程序指令,用于处理特定的运算和逻辑问题。
衡量算法优劣的主要标准是时间复杂度和空间复杂度。
2.什么是数据结构?
数据结构是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。
数据结构包含数、链表这样的线性数据结构,也包含树,图这样的复杂数据结构。
3.什么是时间复杂度?
时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作T(n)=O(f(n))。
常见的时间复杂度按照从低到高的顺序,包括O(1)、O(logn)、O(n)、O(nlogn)、O(n²)等。
4.什么是空间复杂度?
常见的空间复杂度按照从低到高的顺序,包括O(1)、O(n)、O(n²)等。其中递归算法的空间复杂度和递归深度成正比。
5.什么是数组?
数组是由有限个相同类型的变量所组成低端有序集合,它的物理存储方式是顺序存储,访问方式是随机访问。利用下标查找数组元素的时间复杂度是O(1),中间插入、删除数组元素的时间复杂度是O)n。
6.什么是栈?
栈是一种线性逻辑结构,可以用数组实现,也可以用链表实现。栈包含入栈和出栈操作,遵循先入后出的原则(FILO)。
7.什么是队列?
队列也是一种线性逻辑结构,可以用数组实现,也可以用链表实现。队列包含入队和出队操作。遵循先入先出的原则(FIFO)。
8.什么是散列表?
散列表也叫哈希表,是存储Key-Vlaue映射映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作。散列表通过哈希函数实现Key和数组下标的转换,通过开放寻址法和链表法来解决哈希冲突。
9.什么是树?
树是n个节点的有限集,有且仅有一个特定的称为根的节点。当n>1时,其余节点节点可分为m个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。
10.什么是二叉树?
二叉树是树的一种特殊形式,每一个节点最多有两个孩子节点。二叉树包含完全二叉树和满二叉树两种特殊形式。
11.二叉树的遍历方式有几种?
根据遍历节点之前的关系,可以分为前序遍历、中序遍历、后序遍历、层序遍历这4种方式;从更宏观的角度划分,可以划分为深度优先遍历和广度优先遍历两大类。
12.什么是二叉堆?
二叉堆是一种特殊的完全二叉树,分为最大堆和最小堆。
在最大堆中,任何一个父节点的值,都大于或等于它左、右孩子节点的值。
在最小堆中,任何一个父节点的值,都小于或等于它左、右孩子节点的值。
13.什么是优先队列?
优先队列分为最大优先队列和最小优先队列。
在最大优先队列中,无论入列顺序如何,当前最大的元素都会优先出队,这是基于最大堆实现的。
在最小优先队列中,无论入队顺序如何,当前最小的元素都会优先出队,这是基于最小堆实现的。