算法基础知识【2】(8-10)

Date: 2019-08-10

1.  快速排序总比简单排序快()    错

解释:  当原有数列是有序的,快排和简单选择时间复杂度都为O(n^2)    

2.  在索引顺序表中,实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每块中元素个数有关()  对

解释:  

假设有n个数,分块查找,每个块有k个数,这样可以分成n/k块;
对每个块检索,可以有klogk;
这样所有的数,共有n/k * klogk = nlogk

3.  计算算法的时间复杂度是属于一种()   事前分析估算的方法

解释:  算法时间复杂度是运行实际程序前通过分析和估算衡量算法的效率。

4.  下面给出的四种排序法中()排序法是不稳定性排序法 D

A. 插入
B. 起泡
C. 二路归并
D. 堆

解释:冒泡排序、基数排序、归并排序、插入排序算法都是稳定性算法(冒归基插)。不稳定的:快排,堆排,希尔,选择

5.   对有 n 个记录的表作快速排序,在最坏情况,算法的时间复杂度是   (O(n^2)) ;最坏情况即是基本有序的情况下。

6.  下面的哪种排序算法在算复杂度平均不是O(nlogn)的?   B

A.快速排序

B.桶排序

C.归并排序

D.二叉树排序树排序

E.堆排序

解释;

桶排序的平均时间复杂度为线性的O(N+C),其中C=N*(logN-logM)。如果相对于同样的N,桶数量M越大,其效率越高,最好的时间复杂度达到O(N)。 当然桶排序的空间复杂度 为O(N+M),如果输入数据非常庞大,而桶的数量也非常多,则空间代价无疑是昂贵的。此外,桶排序是稳定的。

7.   对同一待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是 ()。 D

A. 排序的总趟数
B. 元素的移动次数
C. 使用辅助空间的数量
D .元素之间的比较次数

解释;折半插入排序,是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 所以,很明显比较的次数减少了。

补充: 

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

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

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

8.  

假设小明用某个排序算法对整数序列(82,45,25,15,21)进行排序。一下为排序过程中序列状态的变化过程:

输入:82 45 25 15 21

第一步:45 82 25 15 21

第二步:25 45 82 15 21

第三步:15 25 45 82 21

······

请问小明用的是什么排序算法?  插入排序算法(插入排序,特点是,第n轮,前n个数字会有序。 )

解释:  

该题考查的是不同排序方法的原理,从题目中可以得出是逐步将待排序的元素插入到已排序序列的对应位置,属于插入排序。

选择排序:将第一个元素作为基准,后面的元素依次和第一个元素做比较选出最小元素,并和第一个元素交换位置,所以经过第一步排序可以确定整个序列的最小元素A不正确

归并排序:两两合并排序,第一步的元素25,15应该交换位置作为子序列,所以B不正确。

快速排序:需要枢轴值为比较对象,第一步排序后会将序列分为大于枢轴和小于枢轴两部分,题目选项后三个元素均小于枢轴而没有放到枢轴之前

9.  将两个各有n个元素的有序表归并成一个有序表,其最多的比较次数是()  2n-1

解释:  最多的比较次数是当两个有序表的数据刚好是插空顺序的时候,比如:第一个序列是1,3,5,第二个序列是2,4,6,把第二个序列插入到第一个序列中,先把第二个序列中的第一个元素2和第一个序列依次比较,需要比较2次(和1,3比较),第二个元素4需要比较2次(和3,5比较,因为4比2大,2之前的元素都不用比较了),第三个元素6需要比较1次(只和5比较),所以最多需要比较5次。即2n-1次。

10.  输入若已经是排好序的(升序),下列排序算法最快的是()   A

A. 插入排序
B. Shell排序
C. 合并排序
D. 快速排序

解释: 

快速排序在元素基本无序的情况下是最好的选择,在基本递增或递减中时间复杂度是O(n^2)

归并排序时间复杂度稳定在O(nlogn)

希尔排序很难说,跟选择的增量有关,一般小于O(n^2),大于O(n)

插入排序是在序列已有序的情况下最快的,时间复杂度是O(n),另外在数数据规模较小时插入排序效果也很好。

一般

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值