数组

计算机基础--数组专项练习

解析:数组储存的地址必须是连续的,而线性表储存的地址可连续也可不连续。

2、一维数组与线性表的区别是(    )。

A、前者长度固定,后者长度可变

B、后者长度固定,前者长度可变

C、两者长度均固定

D、两者长度均可变

正确答案: A

3.在以下哪个操作中, 数组比链表更快?

A、原地逆序
B、头部插入
C、返回头节点
D、返回随机节点

正确答案: D

解析:链表是顺序访问的,数组应该是随机访问的,数组给定下标能够直接寻址,指哪儿就是哪儿

计算机基础--数组专项练习

解析:a数组总共有10个数,而角标从0开始,最大脚标是9,a[10]的脚标是9,所以不存在a[10].

5.线性表就是顺序存储的表()

A、对

B、错

正确答案: B

分析:线性结构包括顺序存储结构和链接存储结构。所以线性表有两种情况。除了线性结构还有非线性结构,如:树,图。栈和队列就是用线性结构实现的,它本身就是一中种结构。可以把栈和队列归在线性结构中

6.请问对一个排好序的数组进行查找,用平均时间复杂度最小的算法,时间复杂度为()

A、O(n)

B、O(lgn)

C、O(nlgn)

D、O(1)

正确答案: B  

解析:二分查找法logN;

计算机基础--数组专项练习

7.希望用最快的速度从一个无序数组中挑选出其中前十个最大的元素,在以下的排序方法中()

A、快速排序
B、堆排序
C、归并排序
D、基数排序

正确答案: B

链接:https://www.nowcoder.com/questionTerminal/2bde0e3a073d4bb18218a7ba9adfeda3
来源:牛客网

快速排序:选取一个基准数,序列最左边和最右边分别设置一个探针i,j。先从右往左找一个小于基准数的数,再从左往右找一个大于基准数的数,然后交换他们。继续从右向左重复以上过程,直至两探针相遇。最后基准数与两探针相遇位置的数进行交换。一轮排序结束后,基准数将序列分为两部分,左边的数都小于基准数,右边的数都大于基准数。平均复杂度为O(nlogn),最坏为O(n^2)。 **********************************************

堆排序:不稳定排序,复杂度O(nlogn)。升序采用大顶堆(每个结点的值都大于或等于其左右孩子结点的值),降序采用小顶堆。从最后一个非叶子结点开始,从左至右,从下至上调整成堆结构。一轮排序后,无序序列被构造成了一个堆,堆顶(根结点)元素为该趟排序序列最大或最小值,然后将堆顶元素与末尾元素进行交换。对剩余结点继续作上述调整。 **********************************************

归并排序:时间复杂度O(nlogn)。将待排序序列分成两组,只需使两组分别有序,然后将两组有序数列合并完成排序。采用递归分解数列,当分出来的组只有一个数据时认为该组有序,然后依次合并相邻小组。 **********************************************

基数排序:稳定排序。时间复杂度O(d(n+r))。r为基数,d为位数。依次对各个位进行排序,位数不足的补齐。分为最低位优先法(LSD)和最高位优先法(MSD)。分配: 先从个位开始,根据位值分别放入0-9号桶中。收集:将桶中的数据按顺序放到数组中。同一桶中按放入顺序取出(稳定排序)。

8.具有 n 个整数的数组 A=[29,6,28,20,2,24] 使用插入排序( Insertion Sort )算法排序,算法伪代码如下:

经过三趟排序后,数组 A 的排列状态将是()

计算机基础--数组专项练习

A、6,29,28,20,2,24
B、6,28,20,2,24,29
C、6,20,28,29,2,24
D、2,6,20,24,28,29

解析:

第一趟:6 29 28 20 2 24

第二趟:6 28 29 20 2 24

第三趟:6 20 28 29 2 24

9.链表和数组的区别:(多选)

A、在有序的情况下搜索
B、插入和删除
C、随机访问
D、数据存储类型

正确答案: A B C

解析:

链表:链表是一块不连续的动态空间,长度可变;链表需要按顺序检索节点,效率低;

链表的优点是可以快速插入和删除节点,大小动态分配,长度不固定。

链表不存在越界问题。

数组:数组是一快连续的空间,声明时长度就需要固定。

数组的优点是速度快,数据操作直接使用偏移地址。

数组有越界问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章: