1.快速排序和归并排序的优缺点,时间复杂度问题
快排缺点:不稳定排序,如果数据基本有序,复杂度可能退化为0(n^ 2)
归并排序缺点:空间复杂度大,用的额外空间比较多
2.简述四种常见的数据逻辑结构
集合:集合中任意两个数据元素之间都没有逻辑关系。
线性结构:线性结构中的结点按逻辑关系依次排列成一个“锁链”。
树形结构:树形结构具有分支、层次特性,其形态像一棵树。
图状结构:图状结构中的结点按逻辑关系互相缠绕,任何两个结点都可以邻接。
3.简述快速排序的基本思想
采用分治思想,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
4.链表和数组的区别
链表的特性是可以任意删除和添加元素,不需要移动其它的元素。每个链表结点保存一个元素的值和指向下一个元素的指针。
数组是一组长度固定具有相同类型的元素的集合。数组中插入、删除数据操作时需要移动其它数据项。
5.稀疏矩阵的排列
(1)顺序存储
1)三元组表示法。三元组数据结构为一个长度为n,表内每个元素都有3个分量的线性表,其中三个分量分为值、行下标和列下标。
2)伪地址表示法。伪地址就是元素在矩阵中按照行优先或者列优先储存相对位置。与三元组类似,每行只有两个存储单元,一个放值,一个放伪地址
(2)链式存储
1)邻接表表示法。将矩阵种每一行非零元素串成一个链表,链表结点中有两个分量,分别表示该结点对应的元素值和列下标。
2)十字链表法。矩阵的每一行用一个带头结点的链表表示,每一列用一个带头结点的链表表示,每个元素有5个分量:行分量,列分量、数据分量、以及指向两头结点的指针。
6.深度遍历的过程
首先选择一个起始结点v,标记为已访问,然后找一个与v邻接但未被访问过的结点w,访问w并标记为已访问,再选取一个与w邻接但未被访问的结点并访问,以此重复进行。当一个顶点的所有邻接点都被访问过时,则依次退回到最近未被访问过的顶点,对它进行访问,直至图中所有结点都被访问过。
广度遍历过程
首先选择一个起始结点v,标记为已访问,然后访问v的全部邻接点,再按此方法依次访问与v的邻接点邻接的所有顶点,直到所有结点被访问。