浅谈java数据结构

数据结构分类:线性结构和非线性结构

问题一:

什么是线性和非线性;

我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构;

线性结构包括:数组,链表,队列,栈;

非线性结构包括:树,图,表;

详解:

一.线性结构

1.数组

特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此,查询速度很快,然而插入和删除时,需要对元素移动空间,比较慢。

数组使用场景:频繁查询,很少增加和删除的情况。

2.链表

特点:元素可以不连续内存中,是以索引将数据联系起来的,当查询元素的时候需要从头开始查询,所以效率比较低,然而添加和删除的只需要修改索引就可以了

使用场景:少查询,需要频繁的插入或删除情况

3.队列

特点:先进先出,

使用场景:多线程阻塞队列管理非常有用

4.栈

特点:先进后出,就像一个箱子,

使用场景:实现递归以及表示式

5.数组与链表的区别

数组连续,链表不连续(从数据存储形式来说)

数组内存静态分配,链表动态分配

数组查询复杂度0(1),链表查询复杂度O(n)

数组添加或删除,复杂度o(n),链表添加删除,复杂度O(1)

数组从栈中分配内存。链表从堆中分配内存。


----其他解释

1. 线性linear,指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数;
<wbr><wbr>非线性non-linear则指不按比例、不成直线的关系,一阶导数不为常数。</wbr></wbr>

2. 线性的可以认为是1次曲线,比如y=ax+b ,即成一条直线
<wbr><wbr>非线性的可以认为是2次以上的曲线,比如y=ax^2+bx+c,(x^2是x的2次方),即不为直线的即可</wbr></wbr>

3. 两个变量之间的关系是一次函数关系的——图象是直线,这样的两个变量之间的关系就是“线性关系”;
<wbr><wbr>如果不是一次函数关系的——图象不是直线,就是“非线性关系</wbr></wbr>

4. “线性”与“非线性”,常用于区别函数y = f(x)对自变量x的依赖关系。线性函数即一次函数,其图像为一条直线。其它函数则为非线性函数,其图像不是直线。
  线性,指量与量之间按比例、成直线的关系,在空间和时间上代表规则和光滑的运动;而非线性则指不按比例、不成直线的关系,代表不规则的运动和突变。<wbr></wbr>
  比如,普通的电阻是线性元件,电阻R两端的电压U,与流过的电流I,呈线性关系,即R=U/I,R是一个定数。二极管的正向特性,就是一个典型的非线性关系,二极管两端的电压u,与流过的电流i不是一个固定的比值,即二极管的正向电阻值,是随不同的工作点(u、i)而不同的。

5. 在数学上,线性关系是指自变量x与因变量yo之间可以表示成y=ax+b,(a,b为常数),即说x与y之间成线性关系。
<wbr><wbr>不能表示成y=ax+b,(a,b为常数),即非线性关系,非线性关系可以是二次,三次等函数关系,也可能是没有关系。</wbr></wbr>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值