Ⅰ 判断题: 插入排序算法将数据交换次数降到了O(N). ()
最多(n-1)(n+4),都是O(n*log2n),最多为3(n-1),基数排序,是稳定的排序!;是不稳定的排序,是稳定的排序;
2 折半插入排序;2,希望对你有帮助;
使用一个辅存空间,希望列举的对你有帮助;
使用一个辅存空间,a[0]做“哨兵”(即a[0]不存数据: 比较最少为;
移动次数最少为0:n-1次;
4 简单选择排序:比较和移动次数最少时间复杂度表示为O(n*log2n),2-路插入排序 等等很多的排序方法: 比较和移动次数没有好坏之分;
3 冒泡排序;
使用一个辅助存储空间,最多时间复杂度表示为O(n2)!
比如n个顺序存储元素进行排序;2
移动次数 最少0,而是用作辅存空间使用)的情况
1 直接插入排序,是稳定的排序:比较次数 最少与最多同,最多时间复杂度表示为o(n2),最多为n的平方;
7 2-路归并排序,这里就不一一列举了;
6 堆排序;2
使用一个辅助存储空间,都是n*log2n(其中2为底;
移动次数最少为0,是不稳定的排序:比较和移动次数没有好坏之分,下边表示同),是稳定的排序;
需要n个辅助存储空间:比较次数 最少n-1次;最多(n-1)(n+2),以下也如此表示);(n的平方;
另外还有很多的排序方法如 希尔排序,最多时间复杂度为O(n2),是稳定的排序;
比较和移动次数最多的时间复杂度表示为O(n2),各种排序说的也太多了;
使用一个辅存空间,都是O(n*log2n);
使用的辅助存储空间最少为log2n: 比较次数没有多少之分,这里讲几种简单的吧;
5 快速排序都不知道怎么回答,均是n(n-1),
移动次数 最少0
:
数据结构 严蔚敏版
Ⅱ 计算机二级公共基础知识要点
为了方便计算机等级试,特意整理出来的。第一章数据结构与算法1算法是解题方案的准确而完整的描述,它不等于程序,也不等于计算方法。基本特征:可行性、确定性、有穷性、拥有足够的情报。2算法复杂度主要包括时间复杂度和空间复杂度。时间复杂度:用来衡量算法执行过程中所需要的基本运算次数。空间复杂度:用来衡量算法执行过程中所需要的存储空间。3数据结构研究的主要内容:(1)数据的逻辑结构(2)数据的存储结构(3)对各种数据结构进行的运算4研究数据结构的主要目的:提高数据处理的效率。5数据结构的定义:指相互关联的数据元素的集合。6数据的逻辑结构反映数据元素之间的逻辑关系,数据的存储结构是数据的逻辑结构在计算机存储空间的存放形式。同一种逻辑结构可以采用不同存储结构,但影响数据处理效率。7数据结构分为两大类型:线性结构与非线性结构常见线性结构:线性表、栈、队列、线性链表常用非线性结构:树、二叉树、图8线性表示由n(n>=0)个相同类型的数据元素构成的有限序列。结构特征:(1)数据元素在表中的位置由序号决定,数据元素之间的相对位置是线性的(2)对于一个非空线性表,有且只有一个根节点a1,它无前件,有且只有一个终端结点an,它无后件,除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。基本存储结构:(1)顺序存储(2)链式存储9顺序表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。10进行顺序表的删除运算时也需要移动元素,在等概率情况下,平均移动(n-1)/2个元素。11栈只能在栈顶插入或删除元素,是一种先进后出FILO(或称为后入先出LIFO)的线性表。12队列是只能从队尾插入元素,在队头删除元素,是一种先进先出FIFO(或后入后出LILO)的线性表。13线性链表不能随机存取。14在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。15在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。16循环链表实单链表基础上增加了一个表头结点,其插入和删除运算与单链表相同,可以从任意结点出发来访问表中其他所有结点,并实现空表与非空表的运算。17一般二叉树通常采用链式存储结构,对于满二叉树与完全二叉树来说,可以按层序进行顺序存储。18二分查找知识用于顺序存储的线性表,对于无序线性表和线性表的链式存储结构只能用顺序查找。19冒泡排序是每一趟都会把较小的元素先前移动,最坏比较次数是n(n-1)/2。20简单插入排序法是将无序序列中的各元素依次插入到已经有序的线性表中,最坏比较次数为n(n-1)/2。21希尔排序法的基本思想:将无序序列划分成若干个子序列(又相隔某个增量h的元素组成)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,在对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的。22选择排序每一趟都是找出无序序列中的最小一个元素,最坏比较次数为n(n-1)/2。23排序技术:(1)交换排序法:冒泡排序、快速排序(2)插入排序法:简单插入排序法、希尔排序(3)选择排序法:简单选择排序法、堆排序法
Ⅲ 问几道c语言的选择题
(3)。D)快速排序为n(n-1)/2
( 5)。A)存储空间不一定是连续,且各元素的存储顺序是任意的
( 9)。D)以上三种说法都不对
(12)。A)-80.
Ⅳ 有250个关键字存到散列表中,用线性探查法解决冲突,查找时比较次数不超过3次,该散列至少有多少存储空间
线性探查再散列的查找成功的平均查找长度的理论值为(1+ 1/(1-a))/2,按照你的要求小于3,得到装填因子a <= 4/5,为0.8,因此存储空间约为250/0.8 = 312.5,上取整为313
Ⅳ 在97个记录的由于顺序表中进行二分查找,最大比较次数是
在97个记录的由于顺序表中进行二分查找,最大比较次数是7次。
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
根据顺序表二分法查找比较次数的计算公式:
(5)存储空间和比较次数扩展阅读
算法要求:
1、必须采用顺序存储结构。
2、必须按关键字大小有序排列。
在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。
由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。
顺序存储结构的主要优点是节省存储空间,因为分配给数据的存储单元全用存放结点的数据(不考虑c/c++语言中数组需指定大小的情况),结点之间的逻辑关系没有占用额外的存储空间。
采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。
但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。
优点:随机存取表中元素、储存密度大。
缺点:插入和删除操作需要移动元素。
Ⅵ 冒泡排序法和快速排序比较的算法
打你屁股,这么简单的问题都不认真研究一下。
冒泡排序是最慢的排序,时间复杂度是 O(n^2)。
快速排序是最快的排序。关于快速排序,我推荐你看看《代码之美》第二章:我编写过的最漂亮的代码。作者所说的最漂亮,就是指效率最高的。
--------------------------------摘自《代码之美》---------------
当我撰写关于分治(divide-and-conquer)算法的论文时,我发现C.A.R. Hoare的Quicksort算法(“Quicksort”,Computer Journal 5)无疑是各种Quicksort算法的鼻祖。这是一种解决基本问题的漂亮算法,可以用优雅的代码实现。我很喜欢这个算法,但我总是无法弄明白算法中最内层的循环。我曾经花两天的时间来调试一个使用了这个循环的复杂程序,并且几年以来,当我需要完成类似的任务时,我会很小心地复制这段代码。虽然这段代码能够解决我所遇到的问题,但我却并没有真正地理解它。
我后来从Nico Lomuto那里学到了一种优雅的划分(partitioning)模式,并且最终编写出了我能够理解,甚至能够证明的Quicksort算法。William Strunk Jr.针对英语所提出的“良好的写作风格即为简练”这条经验同样适用于代码的编写,因此我遵循了他的建议,“省略不必要的字词”(来自《The Elements of Style》一书)。我最终将大约40行左右的代码缩减为十几行的代码。因此,如果要回答“你曾编写过的最漂亮代码是什么?”这个问题,那么我的答案就是:在我编写的《Programming Pearls, Second Edition》(Addison-Wesley)一书中给出的Quichsort算法。在示例2-1中给出了用C语言编写的Quicksort函数。我们在接下来的章节中将进一步地研究和改善这个函数。
【示例】 2-1 Quicksort函数
void quicksort(int l, int u)
{ int i, m;
if (l >= u) return; 10
swap(l, randint(l, u));
m = l;
for (i = l+1; i <= u; i++)
if (x[i] < x[l])
swap(++m, i);
swap(l, m);
quicksort(l, m-1);
quicksort(m+1, u);
}
如果函数的调用形式是quicksort(0, n-1),那么这段代码将对一个全局数组x[n]进行排序。函数的两个参数分别是将要进行排序的子数组的下标:l是较低的下标,而u是较高的下标。函数调用swap(i,j)将会交换x[i]与x[j]这两个元素。第一次交换操作将会按照均匀分布的方式在l和u之间随机地选择一个划分元素。
在《Programming Pearls》一书中包含了对Quicksort算法的详细推导以及正确性证明。在本章的剩余内容中,我将假设读者熟悉在《Programming Pearls》中所给出的Quicksort算法以及在大多数初级算法教科书中所给出的Quicksort算法。
如果你把问题改为“在你编写那些广为应用的代码中,哪一段代码是最漂亮的?”我的答案还是Quicksort算法。在我和M. D. McIlroy一起编写的一篇文章("Engineering a sort function," Software-Practice and Experience, Vol. 23, No. 11)中指出了在原来Unix qsort函数中的一个严重的性能问题。随后,我们开始用C语言编写一个新排序函数库,并且考虑了许多不同的算法,包括合并排序(Merge Sort)和堆排序(Heap Sort)等算法。在比较了Quicksort的几种实现方案后,我们着手创建自己的Quicksort算法。在这篇文章中描述了我们如何设计出一个比这个算法的其他实现要更为清晰,速度更快以及更为健壮的新函数——部分原因是由于这个函数的代码更为短小。Gordon Bell的名言被证明是正确的:“在计算机系统中,那些最廉价,速度最快以及最为可靠的组件是不存在的。”现在,这个函数已经被使用了10多年的时间,并且没有出现任何故障。
考虑到通过缩减代码量所得到的好处,我最后以第三种方式来问自己在本章之初提出的问题。“你没有编写过的最漂亮代码是什么?”。我如何使用非常少的代码来实现大量的功能?答案还是和Quicksort有关,特别是对这个算法的性能分析。我将在下一节给出详细介绍。
2.2 事倍功半
Quicksort是一种优雅的算法,这一点有助于对这个算法进行细致的分析。大约在1980年左右,我与Tony Hoare曾经讨论过Quicksort算法的历史。他告诉我,当他最初开发出Quicksort时,他认为这种算法太简单了,不值得发表,而且直到能够分析出这种算法的预期运行时间之后,他才写出了经典的“Quicksoft”论文。
我们很容易看出,在最坏的情况下,Quicksort可能需要n2的时间来对数组元素进行排序。而在最优的情况下,它将选择中值作为划分元素,因此只需nlgn次的比较就可以完成对数组的排序。那么,对于n个不同值的随机数组来说,这个算法平均将进行多少次比较?
Hoare对于这个问题的分析非常漂亮,但不幸的是,其中所使用的数学知识超出了大多数程序员的理解范围。当我为本科生讲授Quicksort算法时,许多学生即使在费了很大的努力之后,还是无法理解其中的证明过程,这令我非常沮丧。下面,我们将从Hoare的程序开
11
始讨论,并且最后将给出一个与他的证明很接近的分析。
我们的任务是对示例2-1中的Quicksort代码进行修改,以分析在对元素值均不相同的数组进行排序时平均需要进行多少次比较。我们还将努力通过最短的代码、最短运行时间以及最小存储空间来得到最深的理解。
为了确定平均比较的次数,我们首先对程序进行修改以统计次数。因此,在内部循环进行比较之前,我们将增加变量comps的值(参见示例2-2)。
【示例2-2】 修改Quicksort的内部循环以统计比较次数。
for (i = l+1; i <= u; i++) {
comps++;
if (x[i] < x[l])
swap(++m, i);
}
如果用一个值n来运行程序,我们将会看到在程序的运行过程中总共进行了多少次比较。如果重复用n来运行程序,并且用统计的方法来分析结果,我们将得到Quicksort在对n个元素进行排序时平均使用了1.4 nlgn次的比较。
在理解程序的行为上,这是一种不错的方法。通过十三行的代码和一些实验可以反应出许多问题。这里,我们引用作家Blaise Pascal和T. S. Eliot的话,“如果我有更多的时间,那么我给你写的信就会更短。”现在,我们有充足的时间,因此就让我们来对代码进行修改,并且努力编写出更短(同时更好)的程序。
我们要做的事情就是提高这个算法的速度,并且尽量增加统计的精确度以及对程序的理解。由于内部循环总是会执行u-l次比较,因此我们可以通过在循环外部增加一个简单的操作来统计比较次数,这就可以使程序运行得更快一些。在示例2-3的Quicksort算法中给出了这个修改。
【示例2-3】 Quicksort的内部循环,将递增操作移到循环的外部
comps += u-l;
for (i = l+1; i <= u; i++)
if (x[i] < x[l])
swap(++m, i);
这个程序会对一个数组进行排序,同时统计比较的次数。不过,如果我们的目标只是统计比较的次数,那么就不需要对数组进行实际地排序。在示例2-4中去掉了对元素进行排序的“实际操作”,而只是保留了程序中各种函数调用的“框架”。
【示例2-4】将Quicksort算法的框架缩减为只进行统计
void quickcount(int l, int u)
{ int m;
if (l >= u) return;
m = randint(l, u);
comps += u-l;
quickcount(l, m-1);
quickcount(m+1, u);
}
12
这个程序能够实现我们的需求,因为Quichsort在选择划分元素时采用的是“随机”方式,并且我们假设所有的元素都是不相等的。现在,这个新程序的运行时间与n成正比,并且相对于示例2-3需要的存储空间与n成正比来说,现在所需的存储空间缩减为递归堆栈的大小,即存储空间的平均大小与lgn成正比。
虽然在实际的程序中,数组的下标(l和u)是非常重要的,但在这个框架版本中并不重要。因此,我们可以用一个表示子数组大小的整数(n)来替代这两个下标(参见示例2-5)
【示例2-5】 在Quicksort代码框架中使用一个表示子数组大小的参数
void qc(int n)
{ int m;
if (n <= 1) return;
m = randint(1, n);
comps += n-1;
qc(m-1);
qc(n-m);
}
现在,我们可以很自然地把这个过程整理为一个统计比较次数的函数,这个函数将返回在随机Quicksort算法中的比较次数。在示例2-6中给出了这个函数。
【示例2-6】 将Quicksort框架实现为一个函数
int cc(int n)
{ int m;
if (n <= 1) return 0;
m = randint(1, n);
return n-1 + cc(m-1) + cc(n-m);
}
在示例2-4、示例2-5和示例2-6中解决的都是相同的基本问题,并且所需的都是相同的运行时间和存储空间。在后面的每个示例都对这些函数的形式进行了改进,从而比这些函数更为清晰和简洁。
在定义发明家的矛盾(inventor's paradox)(How To Solve It, Princeton University Press)时,George Póllya指出“计划越宏大,成功的可能性就越大。”现在,我们就来研究在分析Quicksort时的矛盾。到目前为止,我们遇到的问题是,“当Quicksort对大小为n的数组进行一次排序时,需要进行多少次比较?”我们现在将对这个问题进行扩展,“对于大小为n的随机数组来说,Quichsort算法平均需要进行多少次的比较?”我们通过对示例2-6进行扩展以引出示例2-7。
【示例2-7】 伪码:Quicksort的平均比较次数
float c(int n)
if (n <= 1) return 0
sum = 0
for (m = 1; m <= n; m++)
sum += n-1 + c(m-1) + c(n-m)
return sum/n
如果在输入的数组中最多只有一个元素,那么Quichsort将不会进行比较,如示例2-6
13
中所示。对于更大的n,这段代码将考虑每个划分值m(从第一个元素到最后一个,每个都是等可能的)并且确定在这个元素的位置上进行划分的运行开销。然后,这段代码将统计这些开销的总和(这样就递归地解决了一个大小为m-1的问题和一个大小为n-m的问题),然后将总和除以n得到平均值并返回这个结果。
如果我们能够计算这个数值,那么将使我们实验的功能更加强大。我们现在无需对一个n值运行多次来估计平均值,而只需一个简单的实验便可以得到真实的平均值。不幸的是,实现这个功能是要付出代价的:这个程序的运行时间正比于3n(如果是自行参考(self-referential)的,那么用本章中给出的技术来分析运行时间将是一个很有趣的练习)。
示例2-7中的代码需要一定的时间开销,因为它重复计算了中间结果。当在程序中出现这种情况时,我们通常会使用动态编程来存储中间结果,从而避免重复计算。因此,我们将定义一个表t[N+1],其中在t[n]中存储c[n],并且按照升序来计算它的值。我们将用N来表示n的最大值,也就是进行排序的数组的大小。在示例2-8中给出了修改后的代码。
【示例2-8】 在Quicksort中使用动态编程来计算
t[0] = 0
for (n = 1; n <= N; n++)
sum = 0
for (i = 1; i <= n; i++)
sum += n-1 + t[i-1] + t[n-i]
t[n] = sum/n
这个程序只对示例2-7进行了细微的修改,即用t[n]来替换c(n)。它的运行时间将正比于N2,并且所需的存储空间正比于N。这个程序的优点之一就是:在程序执行结束时,数组t中将包含数组中从元素0到元素N的真实平均值(而不是样本均值的估计)。我们可以对这些值进行分析,从而生成在Quichsort算法中统计比较次数的计算公式。
我们现在来对程序做进一步的简化。第一步就是把n-1移到循环的外面,如示例2-9所示。
【示例2-9】 在Quicksort中把代码移到循环外面来计算
t[0] = 0
for (n = 1; n <= N; n++)
sum = 0
for (i = 1; i <= n; i++)
sum += t[i-1] + t[n-i]
t[n] = n-1 + sum/n
现在将利用对称性来对循环做进一步的调整。例如,当n为4时,内部循环计算总和为:
t[0]+t[3] + t[1]+t[2] + t[2]+t[1] + t[3]+t[0]
在上面这些组对中,第一个元素增加而第二个元素减少。因此,我们可以把总和改写为:
2 * (t[0] + t[1] + t[2] + t[3])
我们可以利用这种对称性来得到示例2-10中的Quicksort。
【示例2-10】 在Quichsort中利用了对称性来计算
t[0] = 0
14
for (n = 1; n <= N; n++)
sum = 0
for (i = 0; i < n; i++)
sum += 2 * t[i]
t[n] = n-1 + sum/n
然而,在这段代码的运行时间中同样存在着浪费,因为它重复地计算了相同的总和。此时,我们不是把前面所有的元素加在一起,而是在循环外部初始化总和并且加上下一个元素,如示例2-11所示。
【示例2-11】 在Quicksort中删除了内部循环来计算
sum = 0; t[0] = 0
for (n = 1; n <= N; n++)
sum += 2*t[n-1]
t[n] = n-1 + sum/n
这个小程序确实很有用。程序的运行时间与N成正比,对于每个从1到N的整数,程序将生成一张Quicksort的估计运行时间表。
我们可以很容易地把示例2-11用表格来实现,其中的值可以立即用于进一步的分析。在2-1给出了最初的结果行。
表2-1 示例2-11中实现的表格输出
N Sum t[n]
0 0 0
1 0 0
2 0 1
3 2 2.667
4 7.333 4.833
5 17 7.4
6 31.8 10.3
7 52.4 13.486
8 79.371 16.921
这张表中的第一行数字是用代码中的三个常量来进行初始化的。下一行(输出的第三行)的数值是通过以下公式来计算的:
A3 = A2+1 B3 = B2 + 2*C2 C3 = A2-1 + B3/A3
把这些(相应的)公式记录下来就使得这张表格变得完整了。这张表格是“我曾经编写的最漂亮代码”的很好的证据,即使用少量的代码完成大量的工作。
但是,如果我们不需要所有的值,那么情况将会是什么样?如果我们更希望通过这种来方式分析一部分数值(例如,在20到232之间所有2的指数值)呢?虽然在示例2-11中构建了完整的表格t,但它只需要使用表格中的最新值。因此,我们可以用变量t的定长空间来替代table t[]的线性空间,如示例2-12所示。
【示例2-12】 Quicksoft 计算——最终版本
sum = 0; t = 0
15
for (n = 1; n <= N; n++)
sum += 2*t
t = n-1 + sum/n
然后,我们可以插入一行代码来测试n的适应性,并且在必要时输出这些结果。
这个程序是我们漫长学习旅途的终点。通过本章所采用的方式,我们可以证明Alan Perlis的经验是正确的:“简单性并不是在复杂性之前,而是在复杂性之后” ("Epigrams on Programming," Sigplan Notices, Vol. 17, Issue 9)。
Ⅶ 计算机试题
下列说法中正确的是( )。 a在买计算机时,当然买最高档的 b频繁开、关机对计算机的使用寿命并无影响c 为防止计算机感染病毒,应常用消毒液清洗计算机 d系统启动软盘应写保护,且一般在该盘中不要存放用户程序及数据 D
下面预防计算机病毒的手段,错误的是( )。 a要经常地对硬盘上的文件进行备份 b凡不需要再写入数据的磁盘都应有写保护c 将所有的.com和.exe文件赋以“只读”属性 d对磁盘进行清洗 D
计算机病毒通常分为引导型、复合型和( )。 外壳型 文件型 内码型 操作系统型 B
最先开展的电子商务类型是( )。 企业对个人 企业对企业 企业对政府 个人对个人 A
人类社会最先开展的电子商务类型是( )。 B to C B to B B to G C to C A
人类社会最先开展电子商务零售活动的国家是在( )。 亚洲 欧洲 美洲 澳洲 B
公布世界上第一个Internet电子商务标准是在( )。 1998年 1999年 2000年 2001年 B
在电子商务分类中,C to C是( )。 消费者与消费者间的电子商务 企业间的电子商务 企业内部的电子商务 企业与消费者间的电子商务 A
在电子商务分类中,B to G是( )。 消费者与消费者间的电子商务 企业间的电子商务 企业内部的电子商务 企业对政府的电子商务 D
在电子商务分类中,G to G是( )。 政府与政府间的电子商务 企业间的电子商务 企业内部的电子商务 企业与消费者间的电子商务 A
在电子商务分类中,B to B是( )。 消费者与消费者间的电子商务 企业间的电子商务 企业内部的电子商务 企业对政府的电子商务 B
在电子商务分类中,B to C是( )。 消费者与消费者间的电子商务 企业间的电子商务 企业与消费者的电子商务 企业对政府的电子商务 C
在电子政务分类中,G to G是( )。 政府对政府的电子政务 企业间的电子政务 政府对企业的电子政务 政府对公民的电子政务 A
在电子政务分类中,G to B是( )。 企业对个人的电子政务 政府对企业的电子政务 企业对政府的电子政务 政府对公民的电子政务 B
在电子政务分类中,G to C是( )。 政府对政府的电子政务 企业间的电子政务 政府对公民的电子政务 企业对政府的电子商务 C
在电子政务分类中,B to G是( )。 政府对政府的电子政务 企业间的电子政务 政府对公民的电子政务 企业对政府的电子政务 D
我国电子政务的“三网一库”是指机关内部办公网、办公义务资源网、( )及电子政务信息资源库。 局域网 城域网 公共管理与服务网络 广域网 C
ECP(Electronic Check Paper)是( )。 电子现金 信用卡 电子支票 电子钱包 C
Digital Purse是( )。 电子现金 数字钱包 电子支票 电子钱包 B
与传统现金相比电子现金的优点是( )。 方便、成本低 管理控制技术复杂 已解决合理征税问题 不可能被伪造 A
与传统结算工具相比,电子结算的主要缺点是( )。 缺乏便利性 缺乏安全性 初期投入大、技术复杂 不能进行小额结算 C
电子数据交换的简称是( )。 EFT EDI NET EC B
下面哪项不属于电子商务软件功能( )。 商品目录显示 购物车 交易处理机制 WWW平台选择 D
在线调查常见的方法是( )。 邮寄调查 电话调查 人员调查 电子邮件调查 D
下列有关数据的存储结构的叙述中正确的是: 顺序存储方式只能用于存储线性结构 顺序存储方式的优点是存储密度大、且插入和删除运算效率高 链表的每个结点中都恰好包含一个指针 栈和队列的存储方式既可是顺序方式也可是链接方式 D
算法的时间复杂度是指: 执行算法程序所需要的时间 算法程序的长度 算法执行过程中所需要的基本运算次数 算法执行过程中所需要的基本运算次数 C
算法的空间复杂度是指: 算法程序的长度 算法程序中的指令条数 算法程序所占的存储空间 算法执行过程中所需要的存储空间 D
下列叙述中正确的是: 线性表是线性结构 栈与队列是非线性结构 线性链表是非线性结构 二叉树是线性结构 A
数据的存储结构是指: 数据所占的存储空间量 数据的逻辑结构在计算机中的表示 数据在计算机中的顺序存储方式 存储在外存中的数据 B
下列关于队列的叙述中正确的是: 在队列中只能插入数据 在队列中只能删除数据 队列是先进先出的线性表 队列是先进后出的线性表 C
下列关于栈的叙述中正确的是: 栈是非线性结构 栈是一种树状结构 栈具有先进先出的特征 栈具有后进先出的特征 D
链表不具有的特点是: 可随机访问任一元素 插入和删除不需要移动的元素 不必事先估计存储空间 所需空间与线性表长度成正比 A
在深度为5的满二叉树中叶子结点的个数为: 32 31 16 15 C
对长度为n的线性表进行顺序查找:在最坏情况下所需要的比较次数为: n+l n (n+1)/2 n/2 B
程序流程图(PFD)中的箭头代表的是: 数据流部 控制流 调用关系 组成关系 B
下面不属于软件工程3要素的是: 工具 过程 方法 环境 D
数据流图用于抽象描述一个软件的逻辑模型。数据流图由一些特定的图符构成。下列图符名标示的图符不属于数据流图合法图符的是: 控制流 加CE 数据存储 源和潭 A
软件测试过程是软件开发过程的逆过程其最基础性的测试应是: 集成测试 单元测试 有效性测试 系统测试 B
在结构化方法中软件功能分解属于下列软件开发中的阶段是: 详细设计 需求分析 总体设计 编程调试 C
软件测试的目的是: 发现错误 演示元件功能 改善软件的性能 挖掘软件的潜能 A
软件需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及: 阶段性报告 需求评审 总结 都不正确 B
软件调试技术包括: 边界值分析 演绎法 循环覆盖 集成测试 B
软件需求说明书是需求分析阶段的最后成果。以下Ⅰ.数据描述、II.功能描述、Ⅲ.性能描述、Ⅳ.文件结构,哪些是其应包括的内容? I和II II和III II和IV I,Ⅱ和Ⅲ D
软件测试方法中的静态测试方法之一为: 计算机辅助静态分析 黑盒法 路径覆盖 边界值分析 A
在详细设计阶段经常采用的工具有: PAD SA SC DFD A
下列工具中需求分析常用的工具是: PAD PFD NS DFD D
在软件生命周期中能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是: 概要设计 详细设计 可行性分析 需求分析 D
需求分析阶段的任务是确定: 软件开发方法 软件开发工具 软件开发费 软件系统的功能 D
检查软件产品是否符合需求定义的过程称为: 确认测试 集成测试 验证测试 验收测试 A
软件危机的主要表现有多个方面。例如:I�需求增长无法满足II�生产成本过高Ⅲ�进度无法控制Ⅳ�需求定义不准确V�质量不易保证Ⅵ�难以满足维护需要但比较而言。一般认为软件危机产生的主要原因是: I和II I和III II和V I和Ⅵ D
软件测试是保证软件质量的重要手段其首要任务是: 保证软件的正确性 改正软件存在的错误 发现软件的潜在错误 实现程序正确性证明 C
下面不属于软件设计原则的是: 抽象 模块化 自底向上 信息隐蔽 C
在结构化方法的软件需求定义中可采用分析工具来辅助完成。下列工具中哪些是常用的工具?。 I数据流图 II结构图 Ⅲ数据字典 Ⅳ判定表I和IIII、Ⅱ和IIII、Ⅱ和IVI、Ⅲ和Ⅳ A
结构化程序设计主要强调的是: 程序的规模 程序的易读性 程序的执行效率 程序的可移植性 B
对建立良好的程序设计风格下面描述正确的是: 程序应简单、清晰、可读性好 符号名的命名只要符合语法 充分考虑程序的执行效率 程序的注释可有可无 A
在面向对象方法中一个对象请求另一个对象为其服务的方式是通过发送: 调用语句 命令 口令 消息 D
信息隐蔽的概念与下述哪一种概念直接相关? 软件结构定义 模块独立性 模块类型划分 模块耦合度 B
下面对对象概念描述错误的是: 任何对象都必须有继承性 对象是属性和方法的封装体 对象间的通信靠消息传递 操作是对象的动态属性 A
数据库管理系统是( )。 应用软件 系统软件 教学软件 工具软件 B
数据库系统的组成要素不包括( )。 硬件平台 用户 网络 数据库管理员 C
"在下列关系中,( )是一对多的关系。
" 董事长和员工 医生和患者 产品和生产厂家 任课教师和学生 A
在对关系的描述中,( )是错误的。 一个关系表通常是同一个主题的数据集合 关系表采用主键来唯一标识元组 一个关系表可以有多个主键 关系是二维表 C
对关系数据库的检索操作可由三种基本关系运算组合而成,这三种基本关系运算不包括( )。 连接 "比较
" 选择 投影 B
"下列不属于Access数据库对象的是( )。
" 表 窗体 向导 查询 C
"下列不是关系种类的是( )。
" 多对一 一对一 一对多 多对多 A
"属于Access可以导入或链接数据源的是( )。
" Excel Access FoxPro 以上皆是 D
"下述关于数据库系统的叙述中正确的是( )。
" 数据库系统避免了一切冗余 数据库系统减少了数据冗余 数据库系统中数据的一致性是指数据类型一致 数据库系统比文件系统能管理更多的数据 B
三级模式间存在二级映射,它们是( )。 概念模式与外模式间,概念模式与内模式间 子模式与内模式间,外模式与内模式间 子模式与外模式间,概念模式与内模式间 概念模式与内模式间,外模式与内模式间 A
关系数据库管理系统能实现的专门关系运算包括( )。 关联、更新、排序 排序、索引、统计 选择、投影、连接 显示、打印、制表 C
用树型结构来表示实体之间联系的模型是( )。 数据模型 网状模型 层次模型 关系模型 C
在关系数据库中,用来表示实体之间联系的是( )。 二维表 线性表 树结构 网结构 A
将E-R图转换到关系模式时,实体和联系都可以表示为( )。 关系 属性 键 域 A
下列4个选项中,可以直接用于表示概念模型的是( )。 层次模型 实体-联系(E-R)模型 关系模型 网状模型 B
数据库的三级结构分别被定义为( )。 子模式、模式和概念模式 外模式、子模式和存储模式 模式、概念模式和物理模式 外模式、概念模式和内模式 D
"公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是( )。
" 一对一 多对多 一对多 多对一 C
下列4个选项中,说法不正确的是( )。 数据库具有较高的数据独立性 数据库中的数据可以共享 数据库避免了一切数据的重复 数据库减少了数据冗余 C
"在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是( )。
" 人工管理 文件系统 数据项管理 数据库系统 D
"从关系中挑选出指定的属性组成新关系的运算称为( )。
" 投影运算 选取运算 联接运算 交运算 A
"数据库系统的核心是( )。
" 软件工具 数据库管理系统 数据库 数据模型 B
把E-R模型转换成关系模型的过程,属于数据库的( )。 需求分析 概念设计 逻辑设计 物理设计 C
关系表中的每一横行称为一个( )。 字段 元组或记录 码 属性 B
"数据库系统的体系结构是( )。
" 三级模式结构和二级映射 二级模式结构和一级映射 三级模式结构和三级映射 三级模式结构和一级映射 A
数据库中存储的是( )。 数据之间的联系 数据 数据以及数据之间的联系 数据模型 C
"反映现实世界中的实体及实体间联系的信息模型是( )。
" 关系模型 层次模型 E-R模型 网状模型 C
数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。 数据与程序独立存放 不同的数据被存放在不同的文件中 不同的数据只能被对应的应用程序所使用 以上三种说法都不对 D
数据模型按不同的应用层次分为三种类型,它们是( )数据模型、逻辑数据模型和物理数据模型。 概念 关系 用户 层次 A
数据库设计分为以下6个阶段:需求分析阶段、( )、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 系统设计阶段 "概念设计阶段 " 总体设计阶段 模块设计阶段 B
关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、( )和自定义完整性。 域完整性 关联完整性 参照完整性 用户完整性 C
数据库管理系统常见的数据模型有层次模型、网状模型和( )三种。 逻辑模型 关系模型 树状模型 物理模型 B
如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体"工人"与实体"设施"之间存在( )联系。 网状 多对多 一对多 一对一 C
下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。 外模式 内模式 概念模式 逻辑模式 B
关系模型的数据操纵即是建立在关系上的数据操纵,一般有( )、增加、删除和修改四种操作。 连接 投影 选择 查询 D
在关系数据库中,把数据表示成二维表,每一个二维表称为( )。 关系 实体 元组 对象 A
数据库保护分为:安全性控制、( )、并发性控制和数据的恢复。 密码控制 访问控制 完整性控制 正确性控制 C
下列叙述中正确的是( )。 数据库系统中,数据的物理结构必须与逻辑结构一致 数据库技术的根本目标是要解决数据共享的问题 数据库设计是指设计数据库管理系统 数据库是一个独立的系统,不需要操作系统的支持 B
"下列有关数据库的描述,正确的是( )。
" 数据库是一组文件 数据库是一个结构化的数据集合 数据库是一个关系 数据库是一个DBF文件 B
数据库设计包括两个方面的设计内容,它们是( )。 概念设计和逻辑设计 模式设计和内模式设计 内模式设计和物理设计 结构特性设计和行为特性设计 D
单个用户使用的数据视图的描述称为( ) 内模式 外模式 存储模式 概念模式 B
"在数据库管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有( )。
A. B.
C. D.
" 数据无冗余 专门的数据管理软件 数据可共享 特定的数据模型 D这是计算机大一计算机导论期末考试试题
"SQL语言又称为( )。
" 结构化控制语言 结构化操纵语言 结构化定义语言 结构化查询语言 D
索引属于( )。 概念模式 外模式 模式 内模式 B
Ⅷ 各种排序算法所需辅助空间是多少
1、 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1);
2、 快速排序为O(logn ),为栈所需的辅助空间;
3、 归并排序所需辅助空间最多,其空间复杂度为O(n );
4、链式基数排序需附设队列首尾指针,则空间复杂度为O(rd )。
Ⅸ 问:数据结构中,二分法查找方法如何计算他的平均比较次数,快速排序方法如何计算所需的辅助存储空间。
数据结构中,二分法查找方法如何计算他的平均比较次数,快速排序方法如何计算所需的辅助存储空间。