数组
解析:数组储存的地址必须是连续的,而线性表储存的地址可连续也可不连续。
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
解析:
链表:链表是一块不连续的动态空间,长度可变;链表需要按顺序检索节点,效率低;
链表的优点是可以快速插入和删除节点,大小动态分配,长度不固定。
链表不存在越界问题。
数组:数组是一快连续的空间,声明时长度就需要固定。
数组的优点是速度快,数据操作直接使用偏移地址。
数组有越界问题。