对于n个节点的序列,利用shell排序的方法进行比较时,总的关键码的比较次数约为
A.n1.3
B.n2
C.log2n
D.n2/4
A.n1.3
B.n2
C.log2n
D.n2/4
●Shell排序、快速排序、堆排序的稳定性如何? (23) 。
若要尽可能的完成对实数数组的排序,且要求排序是稳定的,则应选 (24) 。
若用插入排序算法对n个记录进行排序,最佳情况下,对关键字进行的比较次数为 (25) 。
对于多关键字而言, (26) 是一种方便而又高效的文件组织方式。
若用冒泡排序对关键字序列{19,16,11,8,5,3}从小到大进行排序,则需要次数为 (27) 。
(23) A.Shell排序是稳定的
B.快速排序是稳定的
C.堆排序是稳定的
D.都不稳定
(24) A.快速排序
B.堆排序
C.归并排序
D.基数排序
(25) A.N2-1
B.N-1
C.N2
D.N+1
(26) A.顺序文件
B.索引文件
C.散列文件
D.倒排文件
(27) A.3
B.6
C.15
D.12
给定节点的关键字序列(F,B,J,G,E,A,I,D,C,H),对它按字母的字典顺序进行排列。采用不同方法,其最终结果相同,但中间结果是不同的。Shell排序的第一趟扫描(步长为5)结果应为(72)。冒泡排序(大数下沉)的第一趟起泡的效果是(73)。快速排序的第一趟结果是(74)。二路归并排序的第一趟结果是(75)。
A.(B, F, G, J, A, D, I, E, H, C)
B.(B, F, G, J, A, E, D, I, C, H)
C.(A, B, D, C, E, E, I, J, G, H)
D.(C, B, D, A, E, F, I, G, J, H)
对于具有n个元素的一个数据序列,若只需得到其中第k个元素之前的部分排序,最好采用(59),使用分治(Divide and Conquer)策略的是(60)算法。
A.希尔排序
B.直接插入排序
C.快速排序
D.堆排序
对于具有n个元素的一个数据序列,若只需要得到其中第A个元素之前的部分排序,最好采用(43)。
A.堆排序
B.希尔排序
C.快速排序
D.直接插入排序
(59)A. 希尔排序 B. 直接插入排序 C. 快速排序 D. 堆排序
(60)A. 冒泡排序 B. 插入排序 C. 快速排序 D. 堆排序
阅读下列函数说明和C代码,回答下面问题。
[说明]
冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1≤k≤n)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需1趟扫描,而数据初态为反序时,需进行n-1趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中[2,3],只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。
局部冒泡排序的基本思想是:对于N个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第—对数据对,若反序,对第2个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第3个数据向前冒泡,使得前3个数据变成有序序列;……;扫描第i对数据对时,其前i个数据已成有序序列,若第i对数据对反序,则对第i+1个数据向前冒泡,使前i+1个数据成有序序列;……;依次类推,直至处理完第n-1对数据对。当扫描完第n-1对数据对后,N个待排序数据已成了有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的
名称由此得来。
以下为C语言设计的实现局部冒泡排序策略的算法,根据说明及算法代码回答问题1和问题2。
[变量说明]
define N=100 //排序的数据量
typedef struct{ //排序结点
int key;
info datatype;
......
}node;
node SortData[N]; //待排序的数据组
node类型为待排序的记录(或称结点)。数组SortData[]为待排序记录的全体称为一个文件。key是作为排序依据的字段,称为排序码。datatype是与具体问题有关的数据类型。下面是用C语言实现的排序函数,参数R[]为待排序数组,n是待排序数组的维数,Finish为完成标志。
[算法代码]
void Part-BubbleSort (node R[], int n)
{
int=0 ; //定义向前局部冒泡排序的循环变量
//暂时结点,存放交换数据
node tempnode;
for (int i=0;i<n-1;i++) ;
if (R[i].key>R[i+1].key)
{
(1)
while ((2) )
{
tempnode=R[j] ;
(3)
R[j-1]=tempnode ;
Finish=false ;
(4)
} // end while
} // end if
} // end for
} // end function
阅读下列函数说明和C代码,将应填入(n)处的字句写在的对应栏内。
一个二阶IIR滤波器的系统函数为
现用b位字长的定点制运算实现它,尾数作舍入处理。
(1)试计算直接I型及直接II型结构的输出舍入噪声方差
(2)如果用一阶网络的级联结构来实现H(z).则共有六种网络流图.试画出有运算舍入噪声时的每种网络流图并计算每种流图的输出舍入噪声方差。
(3)用并联结构实现H(z),计算输出舍入噪声方差。几种结构相比较.运算精度哪种最高,哪种最低?
(4)考虑动态范围,因为系统中任一节点的输出值(包括整个系统的输出节点)等于从输入到此节点的单位冲激响应与系统输入的卷积和,可以表示成
其中yi(n)为第i个节点的输出,hi(n)为从输入到第i个节点的单位抽样响应。对于输出节点来说yi(n)=y(n),hi(n)=h(n)。由上式可得
也就是说,一个网络的最大输出电平不一定在输出端.可能在某一中间节点,利用这一关系以及xmax,试求以上各种网络中每一个的最大ymax.要求网络的所有节点上都不发生溢出,即要最大输出ymax<1.这样即可求得最大的输入xmax(不发生溢出时)。试求以上各个网络的xmax
(5)设输入信号是白噪声序列.它的幅度在-xmax到xmax之间均匀分布.按照已求出的每一滤波器结构的最大输入xmax求每种结构在输出端的噪声信号比值(输出噪声方差与输出信号均方值之比)。问哪种结构输出噪声信号比值最低。
用快速排序的方法对包含n个关键字的序列进行排序,最坏情况下执行的时间为
A.O(n)
B.O(log2n)
C.O(nlog2n)
D.O(n2)
对含有n个关键词的序列进行冒泡法排序,最少的比较次数是______。
A.n
B.n-1
C.n/2
D.n-2