算法与数据结构-刷题

1设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到HASH表中需要做()次线性探测。

解答:线性探测是出现冲突后开始向后探测一个位置,所以从第二个关键字映射时要做1次探测,第三个关键字时要做2次探测...

存放第一个元素时,不需做线性探测;

1+2+3+...+n-1 = (n-1)n/2

2.若进栈序列为1,2,3.4假定进栈和出栈可以穿插进行,则可能的出栈序列是()

A 2,4,1,3  B3,1,4,2  C3,4,1,2   D1,2,3,4

原则:先入后出

验证A:1入栈,2入栈,2出栈,3入栈,4入栈,4出栈,此时没有元素入栈,再次出栈的元素为3,1。所以A错误,正确的顺序是:2431。

验证B:1入栈,2入栈,3入栈,3出栈,此时栈中的元素自底向上为1,2,如果要1出栈,则必须先2出栈。

验证C:1入栈,2入栈,3入栈,3出栈,4入栈,4出栈,此时栈中的元素自底向上为1,2,如果要1出栈,则必须先2出栈。

验证D:1入栈,1出栈,2入栈,2出栈,3入栈,3出栈,4入栈,4出栈。正确。

3.算法的运行时间及加、减、乘、除、转移、存、取等基本运算。要想准确地计算总运算时间是不可行的()正确

 统计运算时间这个问题是个悖论。理由如下

我们不知道基本运算时间。

我们统计基本运算时间需要对应的计时程序。

计时程序本身也是由基本运算组成。

在不知道基本运算时间的情况下我们也就不知道计时程序的运行时间。
从而导致其记录的运算时间不可靠。

4在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(D)

A希尔排序 B冒泡排序 c插入排序 D选择排序

概念:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 (百度的)

从以上概念可以看出来,不管初始顺序是什么,比较的次数都是不变的

5.设有5000个无序的元素,希望用最快的速度排出其中前50个最大的元素,最好选用哪种排序方法?

解析:
堆排序算法中,数组最大的元素位于堆顶处,在输出堆项的最大值之后,使得剩余n-1个元素的序列又建成一个堆,则得到n个元素中的次大值。如此反复执行50次,便能得到前50个最大的元素。和其他的相比堆排序只执行了50次,其他的在最坏的情况下都要遍历,所以为堆排序

6.若用一个大小为6的数组来实现循环队列,队尾指针是rear、队头是front。当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为                2,4

7.排序趟数与序列的原始状态有关的排序方法是()排序法

总排序趟数与初始状态无关的有:(除了快速排序和优化的冒泡,其他都是)

算法复杂度与初始状态无关的有:堆排序归并排序选择排序基数排序

元素总比较次数与初始状态无关的有:选择排序基数排序

元素总移动次数与初始状态无关的有:归并排序基数排序

 

 

你可能感兴趣的:(算法与数据结构-刷题)