Java基础题(十四)

这篇博客主要讨论了Java基础知识,包括二维数组与广义表的关系、数组元素地址计算、栈的存储分配策略、线性表与集合的区别、排序算法的时间复杂度、数组操作以及Spring框架的相关特性。博主详细解释了每道题目并给出了正确答案,同时阐述了相关概念,如控制反转(IoC)和Spring的事务管理。
摘要由CSDN通过智能技术生成

Makasa

打卡刷题Day14

1.二维以上的数组其实是一种特殊的广义表(对)
解析:
广义表(Lists,又称列表)是一种非线性的 数据结构 ,是 线性表 的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构
二维数组也可以看成是一维数组,只不过这个一维数组的类型为数组

2. 已知二维数组A10×10中,元素a20的地址为560,每个元素占4个字节,则元素a10的地址为(A )。
A. 520
B. 522
C. 524
D. 518
解析:
元素a20表示a[2][0]为第三行第一列的那个元素的地址为560,每个元素占4个字节,元素a10表示a[1][0]第二行第一列的那个元素的,已知二维数组为A10×10,所以a[2][0]和a[1][0]相距10个元素,所以4*10=40个字节,答案选择A

3. 若数组S[1…n]作为两个栈S1和S2的存储空间,对任何一个栈,只有当[1…n]全满时才不能进行进栈操作。为这两个栈分配空间的最佳方案是(C)
A. S1的栈底位置为0,S2的栈底位置为n+1
B. S1的栈底位置为0,S2的栈底位置为n/2
C. S1的栈底位置为1,S2的栈底位置为n
D. S1的栈底位置为1,S2的栈底位置为1

解析:
两个栈的栈顶
一个在数组第一个元素,朝着数组索引增加方向增加
一个栈顶在数据最后一个元素,朝着数组索引减少方向增加
当两个栈的栈顶位置相差1时,数组被写满

4. 集合与线性表的区别在于是否按关键字排序(错)
解析:
线性表可以是有序的,也可以是无序的
集合与线性表的区别是是否允许元素重复
集合不允许元素重复,线性表允许元素重复

Mark:
线性表(Linear List):由同类型数据元素构成有序序列的线性结构。
而集合包括List和Set和Map。因为List是有序的,Set是无序的,所以说集合是没有顺序的。
最后总结:线性表不一定是按关键字排序的。 集合是没有顺序的。 线性表允许相同元素,集合不允许相同元素

5. 请问对一个排好序的数组进行查找,用平均时间复杂度最小的算法,时间复杂度为(B)
A. O(n)
B. O(lgn)
C. O(nlgn)
D. O(1)
解析:
二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.
时间复杂度无非就是while循环的次数!
总共有n个元素,
渐渐跟下去就是n,n/2,n/4,…n/2^k,其中k就是循环的次数
由于你n/2^k取整后>=1
即令n/2^k=1
可得k=log2n,(是以2为底,n的对数)
所以时间复杂度可以表示O()=O(logn)

6. 通常对数组进行的两种基本操作是(C )
A.建立与删除
B. 索引和修改
C. 查找和修改
D. 查找与索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M1kasal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值