数据结构之算法与线性表

2022/02/09今天主要看了《大话数据结构》P1-P65

前面的章节讲的知识比较基础,所以看的也很快。只能概括出自己觉得比较重要的东西,别的东西阐述起来倒还不如书上来得准确。

总结起来比较重要的主要三点

1.时间复杂度的计算

时间复杂度的计算主要是体现出一个实现算法的优劣。举个例子吧,我之前实习面试题有一个是这样的

这道题是非常简单的,但是大多数人的第一反应就是一个for循环解决,这样同样可以解决问题,但是,往下看,对比下面这个解决方法就会发现差距

第一种方法,程序要执行n次,n越大,耗费时间越长

第二种方法,程序只需执行一次,无论n为多少

两种方法对比后高下立见!(还好做这题之前看过这一块东西,答题的时候用的就是第二种)

求时间复杂度推导大O阶的步骤

 常见的时间复杂度耗时大小排列

 这块的东西很好理解,重要的是推算过程。不需多说,简单举个例子

 

2.顺序存储结构(数组)的存储方式以及增删改查

描述顺序存储结构需要三个属性

 顺序存储结构是占用连续的内存地址中间不能有间断。而且必须是同一类型

就像我们排队买火车票一样,一个人接一个人不间断,如果队伍里面出现一条狗,我们会给狗留位置吗?不会!狗是不会出现的队伍里面排队的。数组也是一样的,必须是同一类型。

数组的插入

        插入数组尾,那好说,只要不超过数组的容量,他只管往后排便是。前面的元素受影响,就像我们排队买火车票,队伍尾巴来人排队,对我们前面的人并没有影响。

        如果插入数组中间,那可麻烦了,因为数组的内存地址是连续不断的,中间有人插队,那么后面的就要依次往后退。就像我们排队买火车票,队伍中间来人插队,插入的这个位置后面的人要依次往后挪动才行。但前提也是不超过数组的容量。如果插入的是队伍头,那就是最糟糕的情况了,整个队伍都要后移。

        看看书里的介绍吧

 

3.链式存储结构(链表)的存储方式以及增删改查

单向链表以前做过项目,比较熟悉,实现过程也比较清楚,就不记了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值