Date: 2019-08-16
part one 算法基础知识
1. 为查找某一特定单词在文本中出现的位置,可应用的串运算是( ) 子串定位
2. 算法独立于具体的程序设计语言,与具体的计算机无关() 对,与计算机无关,但是与具体的程序设计语言有一定的相关性
补充:
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法优劣与所用计算机无关,但与算法描述语言有关
3. 对长度为n 的线性表作快速排序,在最坏情况下,比较次数为 (n*(n-1)/2)
4. 红黑树中已经有n个数据,寻找某个key是否存在的时间复杂度为()。 O(logn)
解释:
红黑树是平衡二叉树,也就是左右子树是平衡的,高度大概相等。
这种情况等价于一块完全二叉树的高度,查找的时间复杂度是树的高度,为logn
5. 不用递归就不能实现二叉树的前序遍历() 错误,任何的递归程序都可以实现相应的非递归版本,要么用栈,要么用迭代的思想
6. 在数据结构中,从逻辑上可以将其分为() 线性结构(如表 栈 队列)和非线性结构(如树 图)
解释:
(1)数据结构的定义:
数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
(2)数据结构的划分:
数据结构从逻辑上可分为两大类:
1)线性结构。
线性结构的特点是元素之间一对一的关系;除了最后一个元素,每个元素都有一个后继;除了第一个元素,每个元素都有一个前驱。
常见的线性结构如线性表,栈,队列。
2)非线性结构。
非线性结构的特点是一个元素可能有多个前驱和后继。
常见的非线性结构如树,图。
7. 对线性表采用折半查找(二分查找),该线性表必须_______。有序的顺序表(顺序表:顺序存储的线性表)
具体:元素按值有序排列,并且采用顺序存储结构
8. 设n 是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。O(logn)
x=2;
while(x<n/2)
x=2*x;
9.The best time complexity of quick sort algorithm is: O(nlogn)
10. 对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序 希尔排序
A. 选择
B. 快速
C. 希尔
D. 起泡
解释:
1)
希尔排序,选择步长为3,
分为[15,8,4][9,20][7,-1]三组,
对这三组插入排序得[4,8,15][9,20][-1,7]
对应相对位置,即为一次排序后的结果.
2)采用排除法,迅速扫描一下,最大的不再最后,最小的不再最前,肯定排序冒泡和选择;再次扫描,不是俩个有序数列,排除选择。所以就是希尔。咋样之间看出来增量是三呢?观察前后不一样的数字,发现 15,4-》4,15 ; 假设增量为6,验证不对。 7,-1,-》-1,7;假设增量为3,
11. 下面描述中正确的为: C
A. 线性表的逻辑顺序与物理顺序总是一致的。 (线性表逻辑上是线性的,存储上可以是顺序的,可以是链式的 )
B. 线性表的顺序存储表示优于链式存储表示。 (顺序存储和链式存储各有优缺点 )
C. 线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。 (链式存储可以连续,可以不连续,存储时不管其连续还是不连续,都是用指针指向下一个结点 )
D. 二维数组是其数组元素为线性表的线性表。 (二维数组是顺序存储的线性表,其元素都是线性表的元素