日撸 Java 三百行: DAY20 小结

1.面向对象与面向过程相比, 有哪些优势?

面向对象的程序是以算法为核心,即先确定程序执行的步骤,然后一步步实现它。而面向对象是将现实世界的事物抽象为一个个类,程序描述了事物的行为。
我认为面向对象这种对现实世界建模的视角更符合人类的角度,当面对更加复杂的程序时,面向过程对于程序执行步骤的分析会更加困难,对代码的调试也更容易陷入一团糟的状态。而面向对象将数据与方法封装在类中,更适合编写大的程序,出现错误时,先定位到类中再查找错误也会更容易。

2.比较顺序表和链表的异同.

  1. 顺序表和链表都是对表结构的实现,所以它们的逻辑结构是一样,具有相同的方法,比如插入、删除等操作。
  2. 它们的区别在于物理结构的实现不一样,顺序表实现要求数据存储在内存中的连续单元,而链表则可以离散存储。

3.分析顺序表和链表的优缺点.

  1. 顺序表插入、删除时,因为需要先挪动其他元素位置,所以时间复杂度为 O ( n ) O(n) O(n),而链表只需要改变几个引用即可以实现插入、删除,因此时间复杂度为 O ( 1 ) O(1) O(1),当然这里不包括定位特定元素位置的时间。
  2. 对于返回特定位置上值的操作,顺序表因为连续存储,所以可以直接返回对应下标的结点值,时间复杂度 O ( 1 ) O(1) O(1),而链表必须要挨个遍历,时间复杂度 O ( n ) O(n) O(n)
  3. 顺序表的空间全部存的有效数据,而链表除了存储数据之外,还要花费额外的空间存储结点间的引用。另一方面,链表可以离散存储,因而可更灵活的使用空间,而顺序表必须要划出连续的一整块空间。

4.分析调拭程序常见的问题及解决方案.

目前来说,遇见的调试程序的问题大多是边界条件的处理。我通常是追踪某个变量的值的变化来分析是哪一步出了错,然后来改正。

5.分析链队列与循环队列的优缺点.

  1. 链队列在入队前不用判定是否队满,而循环队列需要。
  2. 二者出队时都需要判断是否队空,但链队列在出队至队空的时候,需要对尾结点的引用进行特殊的处理。
  3. 链队列没有固定的空间容量,而循环队列有最大容量,且循环队列需要牺牲一个空间用于区分队空、队满两种状态。
    注:我个人觉得循环队列这种通过取模实现回绕以提高空间利用效率的方式很巧妙,很有美感。

6.第 18 天建立的两个队列, 其区别仅在于基础数据不同, 一个是 int, 一个是 char. 按这种思路, 对于不同的基础数据类型, 都需要重写一个类, 这样合理吗? 你想怎么样?

我感觉不是很合理,因为二者区别仅在于基础数据不同,只需要进行稍稍的修改就可以从int型队列转变为char型队列,为此而写两个类显得代码有些太冗余,没有很好的实现复用。这让我想到了java中的Object类,这是java中所有类的始祖,其他类通过扩展它而实现,或许可以将队列中更为共性的东西提取出来,当具体要实现int型队列或char型队列时再在此基础上进行扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值