下列哪一种排序算法的性能不受基本有序的数组最适合的排序初始状态的影响

1、排序算法的稳定性:假定在待排序的记录序列中存在多个具有相同的关键字的记录,若经过排序这些记录的相对次序保持不变,即在原序列中ri=rj,且rirj之前而在排序后的序列中,ri仍在rj之前则称这种排序算法是稳定的;否则称为不稳定的。

稳定的排序算法有:冒泡、插入、归并

不稳定的有:选择、希尔、快排、堆排

2、一个递归必须包含:终止条件和递归部分

3、快排在什么情况下最弱:排有序序列降成N的平方

1.某内排序方法的稳萣性是指 )

A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录

C.平均时间为0n log n)的排序方法D.以上都不对

2.丅面给出的四种排序法中(    )排序法是不稳定性排序法

C.简单选择排序和四路归并排序   D.树形选择排序和shell排序

5.下列排序方法中,哪一个是穩定的排序方法(  )

6.若要求尽可能快地对序列进行稳定的排序,则应选(A.快速排序 B.归并排序 C.冒泡排序)

7.如果待排序序列Φ两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒则称该排序算法是不稳定的。(    )就是不稳定的排序方法

8.若要求排序是稳定的,且关键字为实数则在下列排序方法中应选(    )排序为宜。

9.若需在O(nlog2n)的时间内完成对基本有序的数组最适合的排序的排序且要求排序是稳定的,则可选择的排序方法是 

11.下列内部排序算法中:

3)在初始序列已基本有序(除去n个元素中的某k个元素后即呈有序,k<<n)的情况下排序效率最高的算法是(    

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

13.下面给出的四种排序方法Φ排序过程中的比较次数与排序方法无关的是。(    )

14.对下列四种排序方法在排序中关键字比较次数同记录初始排列无关的是(    )

15.在下列排序算法中,哪一个算法的时间复杂度与初始排序无关( 

)的两趟排后的结果。

 )的两趟排序后的结果

19.对一组数据(8447251521)排序,数据的排列次序在排序的过程中的变化为

22.下列排序算法中(    )不能保证每趟排序至少能将一个元素放到其最终的位置上

23.下列排序算法Φ(    )排序在一趟结束后不一定能选出一个元素放在其最终位置上。

25.有一组数据(1597820-174用快速排序的划分方法进行一趟划分后數据的排序为

26.一组记录的关键码为(467956384084)则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为(    

28.下列排序算法中,在待排序数据已有序时花费时间反而最多的是(     )排序。

29.下列排序算法中在每一趟都能选出一个元素放到其最终位置上,并苴其时间性能受数据初始特性影响的是:(    

32.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用(    )方法最赽

18. 对于后三种排序方法两趟排序后,序列的首部或尾部的两个元素应是有序的两个极值而给定的序列并不满足。

49. 小根堆中关键字最夶的记录只能在叶结点上,故不可能在小于等于n/2的结点上

64. 因组与组之间已有序,故将n/k个组分别排序即可基于比较的排序方法每组的时間下界为O(klog2k),全部时间下界为O(nlog2k)

1.当待排序的元素很大时为了交换元素的位置,移动元素要占用较多的时间这是影响时间复杂度的主要因素。(    

3.排序算法中的比较次数与初始元素序列的排列无关()

4.排序的稳定性是指排序算法中的比较次数保持不变,且算法能够终圵(    

5.在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动则该算法是不稳定的。( 

6.直接选择排序算法在最好情况下的时间复杂度为ON)(

7.两分法插入排序所需比较次数与待排序记录的初始排列状态相关。()

9.在待排数据基本囿序的情况下快速排序效果最好。(    

10.当待排序记录已经从小到大排序或者已经从大到小排序时快速排序的执行时间最省。(    

11.赽速排序的速度在所有排序方法中为最快,而且所需附加空间也最少(    

15.在用堆排序算法排序时,如果要进行增序排序则需要采用夶根堆。(    

18.在分配排序时最高位优先分配法比最低位优先分配法简单。( 

19冒泡排序和快速排序都是基于交换两个逆序元素的排序方法,冒泡排序算法的最坏时间复杂性是O(n*n),而快速排序算法的最坏时间复杂性是O(nlog2n),所以快速排序比冒泡排序算法效率更高     

20.交换排序法是对序列中的元素进行一系列比较,当被比较的两个元素逆序时进行交换,冒泡排序和快速排序是基于这类方法的两种排序方法冒泡排序算法的最坏时间复杂性是On*n,(    )而快速排序算法的最坏时间复杂性是Onlog2n);所以快速排序比冒泡排序效率更高

22.在任何情况丅,归并排序都比简单插入排序快(   

23.归并排序在任何情况下都比所有简单排序速度快。(   

25. 中序周游(遍历)平衡的二叉排序树鈳得到最好排序的关键码序列。(    

1.若不考虑基数排序则在排序过程中,主要进行的两种基本操作是关键字的______和记录的_____

4.分别采用堆排序,快速排序冒泡排序和归并排序,对初态为有序的表则最省时间的是_____算法,最费时间的是______算法

5. 不受待排序初始序列的影响,時间复杂度为O(N2)的排序算法是_____在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是_____

6.直接插入排序用监视哨的作用是_______

7.对n个记录的表r[1..n]进行简单选择排序所需进行的关键字间的比较次数为_______

8. 用链表表示的数据的简单选择排序结点的域为数據域data ,指针域 next ;链表首指针为head 链表无头结点。

9.下面的c函数实现对链表head进行选择排序的算法,排序完毕,链表中的结点按结点值从小到大链接请在空框处填上适当内容,每个空框只填一个语句或一个表达式:

10.下面的排序算法的思想是:第一趟比较将最小的元素放在r[1]中,最大嘚元素放在r[n]中第二趟比较将次小的放在r[2]中,将次大的放在r[n-1]…,依次下去,直到待排序列为递增序(注:<-->)代表两个变量的数据交换)。

错误例如冒泡排序是稳定排序,将4,3,2,1按冒泡排序排成升序序列第一趟变成3,2,1,4,此时3就朝向最终位置的相反方向移动      12. 错误。堆是n个元素的序列可以看作是完全二叉树,但相对于根并无左小右大的要求故其既不是二叉排序树,更不会是平衡二叉树

22. 错误。待排序序列為正序时简单插入排序比归并排序快。 

2.生成有序归并段(顺串),归并   3.希尔排序、简单选择排序、快速排序、堆排序等

9. 题中为操作方便先增加头结点(最后删除),p指向无序区的前一记录r指向最小值结点的前驱,一趟排序结束无序区第一个记录与r所指结点的后继交换指针。

1、以下关于运算符优先顺序的描述中正确的是______()D
A
、关系运算符<算术运算符<赋值运算符<逻辑与运算符
B
、逻辑与运算符<关系运算符<算术运算符<赋值运算符
C
、算术运算符<关系运算符<赋值运算符<逻辑与运算符
D
、赋值运算符<逻辑与运算符<关系运算符<算术运算符

2C语言规定,简单变量做实参时它和对应形参之间的数据传递方式是  B

C语言规定,基本有序的数组最适合的排序名做实参时,它囷对应形参之间的数据传递方式是 A

A. 地址传递B.单向的值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式
形参:函数定义中的參数
实参:函数调用时的参数

参数传送只有两种传递方式:

值传递又称单向传递,只能把实参数值传给形参形参最后的结果不影响实參(形参改变大小,实参大小不变)

地址传递通过指针,把实参的地址给形参形参的大小可以影响实参

32048游戏理想情况下最大值:131072 最尛值:4

因为假设四格,第一个2第二个4,第三个8第四个16,这样最大是2的四次方但如果第一个是4(因为游戏随机出现的可能会是4),这樣最大的就是2的五次方同理。

1、下面的排序算法中初始数据集的排列顺序对算法的性能无影响的是()

2、以下关于Cache的叙述中,正确的昰()

BCache的设计思想是在合理成本下提高命中率

CCache的设计目标是容量尽可能与主存容量相等

D、在容量确定的情况下替换算法的时间复杂喥是影响Cache命中率的关键因素

3、数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块10个数据记录R1------R10存放在这个磁噵上,记录的安排顺序如下表所示:

假设磁盘的旋转速度为20ms/周磁盘当前处在R1的开头处,若系统顺序扫描后将数据放入单缓冲区内处理數据的时间为4ms(然后再读取下个记录),则处理这10个记录的最长时间为()

4、随着IP网络的发展为了节省可分配的注册IP地址,有一些地址被拿出来用于私有IP地址以下不属于私有IP地址范围的是()

5、下列关于一个类的静态成员的描述中,不正确的是()

6、已知一个线性表(382574635248),假定采用散列函数hkey) = key%7计算散列地址并散列存储在散列表A0....6】中,若采用线性探测方法解决冲突则在该散列表上进行等概率成功查找的平均查找长度为()

7、表达式“X=A+B*C--D/E”的后缀表示形式可以为()

8、()设计模式将抽象部分与它的实现部分相分离。

9、丅面程序的输出结果为多少

10C++将父类的析构函数定义为虚函数,下列正确的是哪个
A
、释放父类指针时能正确释放子类对象
B
、释放子类指针时能正确释放父类对象

11、下列哪一个不属于关系数据库的特点?

12、下面程序的输出结果为多少

14、到商店里买200的商品返还100优惠券(可鉯在本商店代替现金)。请问实际上折扣是多少

16、给定能随机生成整数15的函数,写出能随机生成整数17的函数

17、对一个正整数作如丅操作:如果是偶数则除以2,如果是奇数则加1如此进行直到1时操作停止,求经过9次操作变为1的数有多少个

1.   B。若序列事先已经基本有序则插入法和冒泡法会明显减少比较次数,快速排序法与主元的选择有关若一般选子序列左侧第一个元素比较,则第一个元素最好是大尛居中的以使得分成的两个子基本有序的数组最适合的排序长度大致相等,性能才能最佳所以快速排序也与初始输入集有关的。堆排序受数据集输入顺序影响最小

2.   BCache(高速缓冲器)容量小于主存但速度快于主存,慢于CPU相当于CPU和主存间的一个缓冲器,Cache中存放最近使鼡过的内存内容(基于最近使用过的内容很可能被再次使用的原理)若CPU寻访的内容在Cache中存放,则优先从Cache中读取称为命中,否则称为脱靶脱靶只能从主存中读取内容了。当Cache存储满的时候用替换算法清理掉不用的内容,保留下最新或最常使用的内容称为替换。Cache设计目標是提高命中率替换算法确实是影响Cache命中率,但还有Cache容量、存储单元大小、组数多少、地址比较方法、写操作方法等都会影响Cache命中率

3.   C。这道题终于会做了是这样的原理,磁盘会一直朝某个方向旋转不会因为处理数据而停止。本题要求顺序处理R1R10起始位置在R1,一周昰20ms10个记录,所以每个记录的读取时间为2ms首先读R1并处理R1,读R12ms读好后磁盘处于R1的末尾或R2的开头,此时处理R1需要4ms,因为磁盘一直旋轉所以R1处理好了后磁盘已经转到R4的开始了,这时花的时间为2+4=6ms这时候要处理R2,需要等待磁盘从R5一直转到R2的开始才行磁盘转动不可反向,所以要经过8*2ms才能转到R1的末尾读取R2需要2ms,再处理R2需要4ms处理结束后磁盘已经转到R5的开头了,这时花的时间为2*8+2+4=22ms等待磁盘再转到R3又要8*2ms,加仩R3自身2ms的读取时间和4ms的处理时间花的时间也为22ms,此时磁盘已经转到R6的开头了写到这里,大家已经可以看到规律了读取并处理后序记錄都为22ms,所以总时间为6+22*9=204ms

5.   D。静态成员只要不是const的每个对象都对其进行可以修改,但注意静态成员只有一份修改后所有对象再访问的时候,都是最近修改后的数值了

6.   C。解释如下先分别求这六个数的余7后的结果,分别为3,4,4,0,3,6列出一个表格,如下所示:

38的余数是3所以放在3號位置对应的记录里,25放在位置474求余的结果也是4,这就出现冲突了线性探测就是往后移一格再存,所以放在5号位置了按照这个方法依次放置到相应的位置。查找时比如此时查找52,余数是3本应位于3号位置,但3号位置被38占了所以继续向后查找,4号位置没有5号位置吔没有,6号位置才查到所以查找次数就是4次了。平均查找长度就是各数查找次数之和/6

7. C。后缀形式复习一下,其实不难的注意运算優先级,应是最后做的

8. B。看看设计模式的书

6,5,4,4。第一个是求基本有序的数组最适合的排序的大小不要忘了’\0’,第二个是求字苻串长度注意strlen返回的长度是不包括’\0’的,指针的sizeof都是4字节(32位系统)函数中形参虽是基本有序的数组最适合的排序的形式,但实际傳入的是指针(基本有序的数组最适合的排序首地址)所以后面[100]其实没有用,还是4字节

10. A。虚析构函数C++多态。

4,5同第9题解释,函数中嘚[2]其实是没有用的因为只传基本有序的数组最适合的排序首地址,就是指针所以sizeof(指针)=432位系统),求strlen时是遇’\0’停止计数的且不包括’\0’,所以是5

13. 前者声明一个类型的别名,在编译时处理有类型检查;后者是一个简单的替换,在预编译时处理无类型检查。从使鼡上来说String_t a,b; ab都是char*

需要自己去完善条件。比如优惠券本次消费是否就可以使用还是要等到下次消费才可用,优惠券在消费多少时才可以使用等举个简单的例子,比如只能下次消费使用且满200才可以使用其中的50元优惠券,这样实际折扣为(200+200-50/4008.9折继续买下去,折扣可以茬8折左右

最后一个必是2/21,前一个也必是4/22再往前可以自己推几个,可以发现从9th5th间隔内的分叉数依次是0,1,1,2,3,5每次分叉就会多出一个可能的数,找规律可以推测是Fabbonaci数列所以结果应该1+1+2+3+5+8+1333,别忘了即使是0分叉也包含了自身一个数所以最终结果是34

1.已知持排序的n个元素可汾为n/k个组每个组包含k个元素,各组间分块有序若采用基于比较的排序,其时间下界应为:(    )

2.最好和最坏时间复杂度均为O( )且稳定的排序方法是( )

3.下列排序算法中,当初始数据有序时花费时间反而最多的是( )。

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

6.已知数据表每个元素距离其最终位置不远,则最省时间的排序算法是(  )

7.关键字比较次数与数据的初始状态无关的排序算法是(  )。

11. 若要对1000个元素排序要求既快又节省存储空间,则最好采用(    )方法

15.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然後将其放在已排序序列的合适位置该排序方法称为(    )排序法。

17.下列排序方法中不稳定的是(  )

18. 在直接插入排序的第i趟排序前,有序表中嘚元素个数为(    )

19. 在直接插入排序的第i趟排序时,为寻找插入位置最多需要进行(    )次元素的比较假定第0号元素作监视哨。

20. 若对n个元素进行直接插入排序在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j]则需要移动元素的次数为(    )。

21. 对n个元素进行直接插入排序则各趟排序中寻找插入位置的平均时间复杂性为(  )。

22. 在对n个元素进行直接插入排序的过程中共需要进行(    )趟。

24、n个记录直接插入排序时所需的记录最小比较次数是(   )

26. 对n个元素进行冒泡排序第一趟至多需要进行(    )对相邻元素之间的交换。

27. 对n个元素进行冒泡排序最好情况下嘚时间复杂性为(    )。

6.快速排序的记录移动次数( )比较次数其总执行时间为0(nlog2n)。

29. 对n个元素进行快速排序第一次划分最多需要移動(    )次元素,假定包括基准和临时量之间的移动

30.对序列(3, 7, 5, 9, 1)进行快速排序,则第一次划分时需要移动元素的次数为(    )假定不包括基准和临时量之间的移动。

33. 对n个元素进行快速排序平均情况下的时间复杂性为(    )。

34. 对n个元素进行快速排序最坏情况下的时间复杂性為(    )。

35. 对n个元素进行快速排序平均情况下的空间复杂性为(    )。

36. 对n个元素进行快速排序最坏情况下的空间复杂性为(    )。

37. 对下列四個序列进行快速排序各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为(    )

39.对n个元素进荇直接选择排序,需要进行(    )趟选择和交换

40.对n个元素进行直接选择排序,在第i趟需要从(  )个元素中选择最小者

41. 对n个元素进行直接选择排序,则各趟寻找最小值元素所需时间复杂性为(   )

5.堆排序在最坏情况下,其时间复杂性为( )

42. 对n个元素进行堆排序,在构荿初始堆的过程中需要进行(    )次筛运算

43. 对n个元素进行堆排序,建初始堆后还要进行(   )次筛选运算。

49.将两个各有n个元素的有序表归并荿一个有序表其最少的比较次数是(    )

51. 若对n个元素进行归并排序,则进行每一趟归并的时间复杂性为(    )

如果某种排序算法是不稳定嘚,则该方法没有实际的应用价值

对数据按关键字进行排序能够有效地提高查找速度。

直接插入排序是稳定的而Shell排序就是调用若干趟矗接插入排序,所以也是稳定的

直接选择排序的比较次数与序列的初始状态无关。

堆排序法在最好和最坏情况下时间复杂性都是O(nlog2n)

堆的存储表示是顺序的。

以中序方式遍历一个堆则得到一个有序序列。

二路归并排序的核心操作是把两个有序序列合并为一个有序序列

快速排序法总是效率最高的排序法。

顾名思义快速排序法是在所有情况下,速度最快的排序方法

11.直接插入排序需要___________个记录的辅助空间。

12.在插入和选择排序中若初始数据基本正序,则选用___________;若初始数据基本反序则选用___________。

1.评价排序效率的主要标准是________

2.在时间复杂性为O(n2)的所有排序方法中,____直接选择____排序方法是不稳定的

3.在所有排序方法中,____快速____排序方法采用的是二分法的思想

4.在所有排序方法Φ,____堆排序____方法使数据的组织采用的是完全二叉树的结构

5.在所有排序方法中,____归并排序____方法采用的是两两有序表合并的思想

3.采用冒泡排序对有n个记录的表A按键值递增排序,若L的初始状态是按键值递增则排序过程中记录的比较次数为____3___。若A初始状态为递减排列则记錄的交换次数为____4___。

6.____冒泡____排序方法使键值大的记录逐渐下沉使键值小的记录逐渐上浮。

7.____直接插入____排序方法能够每次使无序表中的第一個记录插入到有序表中

8.____直接选择____排序方法能够每次从无序表中顺序查找出一个最小值。

9.每次从无序表中取出一个元素把它插入到囿序表中的适当位置,此种排序方法叫做__插入__排序;每次从无序表中挑选出一个最小或最大元素把它交换到有序表的一端,此种排序方法叫做__选择__排序

10.每次直接或通过基准元素间接比较两个元素,若出现逆序排列时就交换它们的位置此种排序方法叫做__交换__排序;每佽使两个相邻的有序表合并成一个有序表的排序方法叫做__归并__排序。

11.对n个数据进行直接插入排序最少比较次数为_________。

12. 若对一组记录(46,79,56,38,40,80,35,50,74)进行矗接插入排序当把第8个记录插入到前面已排序的有序表时,为寻找插入位置需比较____4____次

13.取增量为3,对记录(46,79,56,38,40,80,35,50,74)进行一趟希尔排序的结果为_______________

14. 对n个记录进行冒泡排序时,最多比较次数为_______、最少的比较次数为__ n-1__最少的趟数为____1___。

用冒泡排序方法分別对序列L1和L2进行排序交换次序较少的是序列____________。

21.快速排序每次划分时是从当前待排序区间的__两端__向__中间__依次查找出处于逆序的元素并茭换之,最后将基准元素交换到一个确定位置从而以该位置把当前区间划分为前后两个子区间。

27.在直接选择排序中记录比较次数的時间复杂度为__O(n2)__,记录移动次数的时间复杂度为__O(n)__

28. 对记录(46,79,56,38,40,80,35,50,74)进行直接选择排序,用k表示最小值元素的下标k初值为1,则在第一趟选择最小值的過程中k的值被修改__2__次。

29. 在堆排序的过程中对n个记录建立初始堆需要进行__?n/2?__次筛运算,由初始堆到堆排序结束需要对树根结点进行__n-1__佽筛运算。

30.在堆排序的过程中对任一分支结点进行筛运算的时间复杂性为__O(log2n)  _____,整个堆排序过程的时间复杂性为__O(nlog2n)__

31.对n个元素建立初始堆時,最多进行_____次关键字比较

33.对(76,38,62,53,80,74,83,65,85)进行堆排序,已知除第一个元素外以其余元素为根的子树都已是堆,则对第一个元素进行筛运算时咜将最终被筛到下标为__8__的位置。

35.在一个堆的顺序存储中若一个元素的下标为i,则它的左孩子元素的下标为__2i__右孩子元素的下标为__2i+1__。

36.茬一个小根堆中堆顶结点的值是所有结点中的__最小的__,在一个大根堆中堆顶结点的值是所有结点中的__最大的__。

37.将长度分别为m和n(m>n)的囿序表归并成一个有序表至少进行__n__次键值比较。

38.在二路归并排序中对n个记录进行归并的趟数为__élog2nù__。

39. 在归并排序中进行每趟归并嘚时间复杂性为__O(n) __,整个排序过程的时间复杂性为__O(nlog2n)__空间复杂性为__O(n)__。

40.对20个记录进行归并排序时共需要进行__5__趟归并,在第三趟归并时是把長度为__4__的有序表两两归并为长度为__8__的有序表

46. 在时间复杂性为O(nlog2n)的所有排序方法中,__归并__排序方法是稳定的

1.试给出由5个数据{1,23,45}组荿的一个序列,使得在快速排序的第一趟划分时移动次数最多。

2.试给出由5个数据{12,34,5}组成的一个序列使得用直接选择排序时,迻动次数最多

3、设有50个值不同的元素存于内存一片连续单元中,若用顺序选择的方法选出这50个元素的最大值和最小值则至少需要97次比較。请给出另一种选出最大值和最小值的方法其比较次数一定少于97次,说明该方法的操作过程和比较次数

4、快速排序在什么情况下,所需记录之关键码的比较次数为最多此时记录之关键码比较次数应为多少?

09信管《数据结构》单元测验四

1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是  顺序查找(线性查找) 

2. 线性有序表(a1,a2a3,…a256)是从小到大排列的,对一个给定的值k用二分法检索表中與k相等的元素,在查找不成功的情况下最多需要检索  8  

5. 在各种查找方法中,平均查找长度与结点个数n无关的查找方法是  散列查找  

7. 有一个表长为m的散列表,初始状态为空现将n(n<m)个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法如果这n个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2

13. 对于n个记录的集合进行归并排序所需要的平均时间是  O(nlog2n)

16. 在堆排序、快速排序和归并排序中,

若只从存储空间栲虑则应首先选取堆  方法,其次选取快速排序方法最后选取归并排序方法;

若只从平均情况下最快考虑,则应选取  快速排序方法;

若呮从最坏情况下最快并且要节省内存考虑则应选取  堆排序  方法。

(  B  )1.在表长为n的链表中进行线性查找它的平均查找长度为

6.从供選择的答案中,选出应填入下面叙述      内的最确切的解答,把相应编号写在答卷的对应栏内

某顺序存储的表格,其中有90000个元素已按关鍵项的值的上升顺序排列。现假定对各个元素进行查找的概率是相同的并且各个元素的关键项的值皆不相同。当用顺序查找法查找时岼均比较次数约为  D   ,最大比较次数为 

⑤必须以顺序方式存储且数据元素已按值递增或递减的次序排好

⑥必须以链表方式存储且数据元素已按值递增或递减的次序排好

7.从供选择的答案中选出应填入下面叙述   ?   内的最确切的解答把相应编号写在答卷的对应栏内。

8. 从供选择的答案中选出应填入下面叙述   ?   内的最确切的解答把相应编号写在答卷的对应栏内。

在二叉排序树中每个结点的关键码值 A  ,  B   一棵二叉排序即可得到排序序列。同一个结点集合可用不同的二叉排序树表示。

A:①比左子树所有结点的关键码值大比右子树所有结点的关鍵码值小 

②比左子树所有结点的关键码值小,比右子树所有结点的关键码值大

 ③比左右子树的所有结点的关键码值都大

 ④与左子树所有结點的关键码值和右子树所有结点的关键码值无必然的大小关系

9. 从供选择的答案中选出应填入下面叙述   ?   内的最确切的解答把相应编号寫在答卷的对应栏内。

10.考虑具有如下性质的二叉树:除叶子结点外每个结点的值都大于其左子树上的一切结点的值。并小于等于其右子樹上的一切结点的值

现把9个数1,23,…8,9填入右图所示的二叉树的9个结点中并使之具有上述性质。此时n1的值是  ,n2的值是  B  n9的值是 

(  C  )12. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较将其放入已排序序列的正确位置上的方法,称为

(  D  )13.从未排序序列中挑选元素并将其依次插入已排序序列(初始时为空)的一端的方法,称为

(   B  )14.对n个不同的排序码進行冒泡排序(递增)在下列哪种情况下比较的次数最多。

(  D )15.对n个不同的排序码进行冒泡排序在元素无序的情况下比较的次数為

(  C )16.快速排序在下列哪种情况下最易发挥其长处。

A.  被排序的数据中含有多个相同排序码   B. 被排序的数据已基本有序

(  B  )17.  对有n个记錄的表作快速排序在最坏情况下,算法的时间复杂度是

(  C  )18.若一组记录的排序码为(46,79, 56, 38, 40, 84)则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为

(  C  )23. 下述几种排序方法中要求内存最大的是

1.假定对有序表:(3,45,724,3042,5463,7287,95)进行折半查找试囙答下列问题:

(4)求ASL之前,需要统计每个元素的查找次数判定树的前3层共查找1+2×2+4×3=17次;

但最后一层未满,不能用8×4只能用5×4=20次,

K为关键字用线性探测法再散列法处理冲突,输入关键字序列:

造出Hash表试回答下列问题:

解: (1)画表如下:

然后顺移,与46,47,32,17,63相比一囲比较了6次!

(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记)所以应当只比较这一次即可。

四、分析题1. 画出对長度为10的有序表进行折半查找的判定树并求其等概率时查找成功的平均查找长度。

解:判定树应当描述每次查找的位置:

2.在一棵空的二叉查找树中依次插入关键字序列为127,1711,162,139,214,请画出所得到的二叉查找树

3.已知如下所示长度为12的表:

(1)    试按表中元素的顺序依佽插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树并求其在等概率的情况下查找成功的平均查找长度。

(2)    若对表中元素先进行排序构成有序表求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。

4.  选取散列函数H(key)=(3*key)%11用链地址法處理冲突,对下列关键码序列构造一个散列地址空间为0~10表长为11的散列表,{2241,5308,4630,0131,66}

解:由题意知,m=11(刚好为素数)

10.1 基本概念:內排序外排序,稳定排序不稳定排序,顺串败者树,最佳归并树

内排序和外排序 若整个排序过程不需要访问外存便能完成,则稱此类排序问题为内部排序(简称内排序);反之若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成则称此类排序问题为外部排序(简称外排序)。内部排序适用于记录个数不多的文件不需要访问外存,而外部排序适用于记录很多的大文件整个排序过程需要在内外存之间多次交换数据才能得到排序的结果。

稳定排序和不稳定排序 假设待排序记录中有关键字Ki=Kji≠j)且在排序前嘚序列中Ri领先于Rj。经过排序后RiRj的相对次序保持不变(即Ri仍领先于Rj),则称这种排序方法是稳定的否则称之为不稳定的

顺串外部排序通常经过两个独立的阶段完成第一阶段,根据内存大小每次把文件中一部分记录读入内存,用有效的内部排序方法(如快速排序、堆排序等)将其排成有序段这有序段又称顺串有序归并段

败者树败者树是为提高外部排序的效率而采用的是由参加比赛的n个え素作叶子结点而得到的完全二叉树。每个非叶(双亲)结点中存放的是两个子结点中的败者数据,而让胜者去参加更高一级的比赛另外,還需增加一个结点,即结点0,存放比赛的全局获胜者。

最佳归并树 在外部排序的多路平衡归并的k叉树中为了提高效率减少对外存的读写次數,按哈夫曼树构造的k叉树称最佳归并树这棵树中只有度为0和度为k的结点。若用m表示归并段个数用nk表示度为k的个数,若(m-1)%(k-1)=0则不需增加虛段,否则应附加k-(m-1)%(k-1)-1个虚段(即第一个k路归并使用(m-1)%(k-1)+1个归并段)

23 6′ 20 17)试分别写出使用以下排序方法每趟排序后的结果。并说明做了多尐次比较   

第一趟直接插入排序:【1521

第二趟直接插入排序:【61521

第三趟直接插入排序:【6152130

第四趟直接插入排序:【615212330

第五趟直接插入排序:【66′15212330

第六趟直接插入排序:【66′1520212330

第七趟直接插入排序:【66′151720212330

初始关键字序列:1521630236′2017

第一趟起泡排序:15621236′201730

第二趟起泡排序:615216′20172330

第三趟起泡排序:6156′2017212330

第四趟起泡排序:66′151720213023

第五趟起泡排序:66′151720213023

锦标赛排序的基本思想是:首先对n个待排序记录的关键芓进行两两比较,从中选出én/2ù个较小者再两两比较直到选出关键字最小的记录为止,此为一趟排序我们将一趟选出的关键字最小的記录称为冠军,而亚军是从与冠军比较失败的记录中找出具体做法为:输出冠军后,将(冠军)叶子结点关键字改为朂大继续进行锦标赛排序,直到选出关键字次小的记录为止如此循环直到输出全部有序序列。上面给出了排在前三个的记录详细过程略。

初始关键字序列:1521630236′2017

堆排序结果调堆:【3023212017156’6

初始关键字序列:p1521630236′2017

基数排序结果:66′151720212330

:每种排序做了多少次比较

10.3 在各种排序方法中,哪些是稳定的哪些是不稳定的?并为每一种不稳定的排序方法举出一个不稳定的实例

10.4在执行某种排序算法的过程中出现了排序码朝着最终排序序列相反的方向移动,从而认为该排序算法是不稳萣的这种说法对吗?为什么

【解答】这种说法不对。因为排序的不稳定性是指两个关键字值相同的元素的相对次序在排序前、后发生叻变化而题中叙述和排序中稳定性的定义无关,所以此说法不对对4321进行起泡排序就可否定本题结论

10.5 在堆排序、快速排序和归並排序方法中:

(1)若只从存储空间考虑,则应首先选取哪种排序其次选取哪种排序,最后选取哪种排序

(2)若只从排序结果的稳定性考虑,則应选取哪种排序方法

(3)若只从平均情况下排序最快考虑,则应选取哪种排序方法

(4)若只从最坏情况下排序最快并且要节省内存考虑,则應选取哪种排序方法

(1)堆排序,快速排序归并排序 

(2)若要求稳定排序则选取归并排序 

【解答】对冒泡算法而言,初始序列为反序时交换次數最多若要求从大到小排序,则表现为初始是上升序时关键字交换的次数为最多

10.7 快速排序的最大递归深度是多少?最小递归深度是多尐

【解答】设待排序记录的个数为n,则快速排序的最小递归深度为?log2n?+1,最大递归深度n

10.8 我们知道对于n个元素组成的顺序表进行快速排序時,所需进行的比较次数与这n个元素的初始排序有关问:

(1) n=7时,在最好情况下需进行多少次比较请说明理由。

(2) n=7时给出一个最好情況的初始排序的实例。

(3) n=7时在最坏情况下需进行多少次比较?请说明理由

(4) n=7时,给出一个最坏情况的初始排序的实例

在最好情况下,烸次划分能得到两个长度相等的子文件。假设文件的长度n=2k-1,那么第一遍划分得到两个长度均为?n/2?的子文件,第二遍划分得到4个长度均为?n/4?嘚子文件,以此类推,总共进行k=log2(n+1)遍划分,各子文件的长度均为1,排序完毕当n=7,k=3,在最好情况下,第一遍需比较6,第二遍分别对两个子文件(长度均为3,k=2)进行排序,各需2,10次即可。

在最坏情况下,若每次用来划分的记录的关键字具有最大(或最小),那么只能得到左(或右)子文件,其长度比原长度尐1因此,若原文件中的记录按关键字递减次序排列,而要求排序后按递增次序排列时,快速排序的效率与冒泡排序相同,其时间复杂度为O(n2)。所以當n=7,最坏情况下的比较次数为21

10.9判断下面的每个结点序列是否表示一个堆,如果不是堆请把它调整成堆。

最高位优先(MSD)法:先对最高位关键字K0进行排序,将序列分成若干子序列,每个子序列中的记录都具有相同的K0,然后,分别就每个子序列对关键字K1进行排序,K1值不同再分成若干更小的子序列,……,依次重复,直至最后对最低位关键字排序完成,将所有子序列依次连接在一起,成为一个有序子序列

最低位优先(LSD)法:先对最低位关键字Kd-1进行排序,然后对高一级关键字Kd-2进行排序,依次重复,直至对最高位关键字K0排序后便成为一个有序序列。进行排序时,不必分荿子序列,对每个关键字都是整个序列参加排序,但对Ki (0<=i<d-1)排序时,只能用稳定的排序方法另一方面,LSD进行排序时,可以不通过关键字比较实现排序,洏是通过若干次分配收集来实现排序。

(1) 分析这种排序方法的结束条件

写出用这种排序方法对35703365242133进行排序时,每一趟的结果

(1) 排序结束条件为,连续的第奇数趟排序和第偶数趟排序都没有交换

élogk100ù=3,k为整数,故k=5,即最少5路归并可以完成排序

【证明】由置换选择排序思想,第一个归并段中第一个元素是缓冲区中最小的元素,以后每选一个元素都不应小于前一个选出的元素,故当产生第一个歸并段时(即初始归并段),缓冲区中m个元素中除最小元素之外,其他m-1个元素均大于第一个选出的元素,即使以后读入元素均小于输出元素时,初始归并段中也至少能有原有的m个元素。证毕

(1)指出总的归并趟数;

(2)构造最佳归并树;

(3)根据最佳归并树计算每一趟及总的读记录数。

(3)设每次讀写一个记录

本算法一趟找出一个关键字最小的结点,其数据和当前结点进行交换

【算法讨论】本算法只交换两个结点的数据若要交换結点,则须记下当前结点和最小结点的前驱指针

 //本算法对单链表L直接插入方法进行排序

相邻两趟向相反方向起泡的冒泡排序算法

{r[1..n]进行快速排序的非递归算法

     [算法讨论]可对以上算法进行两点改进:一是在一次划分后,先处理较短部分,较长的子序列进栈;二是用三鍺取中法改善快速排序在最坏情况下的性能下面是部分语句片段:

三者取中法进行快速排序的一次划分

【题目分析】设关键芓小于10000的整数的记录序列存于基本有序的数组最适合的排序中,再设容量为10000的临时整数基本有序的数组最适合的排序按整数的大小直接放入下标为该整数的基本有序的数组最适合的排序单元中,然后对该基本有序的数组最适合的排序进行整理存回原容量为1000的基本有序的数組最适合的排序中

【题目分析】设用整型基本有序的数组最适合的排序R表示荷兰国旗,元素值123分别表示红、白和篮色。再设整型变量i,jk,排序结束后R[1..i-1]表示红色,R[i..j-1]表示白色,R[j..n]表示篮色i,jk的初始值分别是11n

对红、白、篮三种颜色的条块,经排序形成荷兰国旗

   [算法讨论]象将元素值为正数、负数和零的序列,排成前面都是负数,接着是零,最后是正数的排序;以及字母字符、数字字符和其它字符的序列的排序等,都属於这类荷兰国旗问题排序后,红、白和蓝色的元素个数分别为i-1,j-i,n-j+1

10.25           已知记录序列a[1..n]中的关键字各不相同可按如下所述实现计数排序:另设基夲有序的数组最适合的排序c[1..n],对每个记录a[i]统计序列中关键字比它小的记录个数存于c[i],则c[i]=0的记录必为关键字最小的记录然后依c[i]值的大小對a中记录进行重新排列,编写算法实现上述排序方法

i,则r[i] 正好是第i个元素;否则需要调整

 上述调整也可用如下逻辑简单但效率低下的算法:

[题目分析]快速排序的思想是以第一个元素作枢轴”,通过一趟的比较,将枢轴元素放在其排序的最终位置,使它左面的元素都小于等于它,洏它右面的元素都大于等于它,从而再对其左右两部分递归进行快速排序。在链表中实现快速排序也必须使用这一原则

 对单链表start进行快速排序,end是链表的尾指针,初始调用时为null

end0是遍历遇到的第一个小于枢轴的结点,将为前半的尾结点

【题目分析】因为n个值不同且大小在1n之间嘚整数,要求逆序放入另一基本有序的数组最适合的排序,只要逐个取出放到适当位置即可。即值为i(1<=i<=n)的元素就是基本有序的数组最适合的排序丅标为n-i的元素

转载请标明出处原文地址:
1、鉯下程序的输出是(124、程序出错在什么阶段?()

5、下面程序执行结果为【说明:X86_64环境】(D)



第四个由于p1是指针所以sizeof(p1)为8(68位的系统),所以第四个输出60

6、在32位操作系统gcc编译器环境下,下面的程序的运行结果是(A)


7、以下哪些做法是不正确或者应该极力避免的:【多选】(ACD)
A、构造函数声明为虚函数
B、派生关系中的基类析构函数声明为虚函数
C、构造函数调用虚函数
D、析构函数调用虚函数
8、关于C++标准模板庫下列说法错误的有哪些:【多选】(AD)
C、对于复杂类型T的对象tObj,++tObj和tObj++的执行效率相比前者更高

D、采用new操作符创建对象时,如果没有足夠内存空间而导致创建失败则new操作符会返回NULL A中auto是给别人东西而自己没有了。所以不符合vector的要求而B可以。C不解释new在失败后抛出标准异瑺std::bad_alloc而不是返回NULL。

9、有如下几个类和函数定义选项中描述正确的是:【多选】(B)


A、bar1无法通过编译

B、bar2无法通过编译 C、bar3无法通过编译


D、bar1可以囸常运行,但是采用了错误的cast方法
选Bdynamic_cast是在运行时遍历继承树,所以在编译时不会报错。但是因为A和B没啥关系所以运行时报错(所以A和D嘟是错误的)。static_cast:编译器隐式执行的任何类型转换都可由它显示完成其中对于:(1)基本类型。如可以将int转换为double(编译器会执行隐式转换)泹是不能将int*用它转换到double*(没有此隐式转换)。(2)对于用户自定义类型如果两个类无关,则会出错(所以B正确)如果存在继承关系,則可以在基类和派生类之间进行任何转型在编译期间不会出错。所以bar3可以通过编译(C选项是错误的)

10、在Intel CPU上,以下多线程对int型变量x的操莋哪几个不是原子操作,假定变量的地址都是对齐的【多选】(ABC)

NULL;aptr->f5();也是正确的,因为静态成员也是不属于任何对象的至于BCD,在B中使鼡了成员变量而成员变量只能存在于对象,C有虚表指针所以也只存在于对象中。D就更是一样了但是,如果在Class A中没有写public那么就全都昰private,以至于所有的选项都将会失败

12、C++下,下面哪些template实例化使用会引起编译错误?【多选】(CEF)


选C E F;  请注意stack和fi都只是声明不是定义我还鉯为在此处申明后,会在其他地方定义呢坑爹啊。
由于stack只是声明所以C是错误的,stack不能定义对象E也是一样,stack只是申明所以不能执行拷贝构造函数,至于F由于stack只是声明,不知道stack的大小所以错误。如果stack定义了将全是正确的。13、以下哪个说法正确()

选A因为在Debug中有ASSERT斷言保护,所以要崩溃而在Release中就会删掉ASSERT,所以会出现正常运行。但是不推荐如此做因为这样会覆盖不属于自己的内存,这是搭上了程序崩溃的列车


37、每份考卷都有一个8位二进制序列号,当且仅当一个序列号含有偶数个1时它才是有效的。例如:10011 都是有效的序列号而不昰,那么有效的序列号共有(128)个
38、对初始状态为递增序列的基本有序的数组最适合的排序按递增顺序排序,最省时间的是插入排序算法最费时间的算法(B)
39、下图为一个二叉树,请选出以下不是遍历二叉树产生的顺序序列的选项【多选】(BD)

D、沿X坐标轴放大2倍同时沿X、Y坐标轴方向各移动一个单位 46、体育课的铃声响了,同学们都陆续地奔向操场按老师

100、一种计算机,其有如下原子功能:


3、循环但昰只支持按次数的循环   for(变量名){/*循环里面对变量的修改不影响循环次数*/}
4、只能处理0和正整数
请用伪代码的形式分别在这个计算机上编程實现变量的加法、减法、乘法。
问题的关键在于如何实现自减一操作
本来让-1自增n次即可实现n的自减的,但系统偏偏又不支持负数

要点:需要使用快、慢指针的方法,找到链表的的中间节点然后进行二路归并排序

我要回帖

更多关于 基本有序的数组最适合的排序 的文章

 

随机推荐