数据结构基础

一.数据结构

分为三类:

线3性结构:数组(存储是连续的),队列,栈,链表,哈希表.......

树型结构:二叉树,二分搜索树,AVL树(平衡树

),红黑树,堆,Trie,线段树,并查集.......

图结构:邻接矩阵,邻接表

数据结构的作用:根据不同的数据结构将问题高效的解决。

数据结构+算法=程序

二.数组

(1)数组:一组相同数据类型数或相同类型数的集合。

(2)数组中内存中如何分配:分配连续的空间,因此在创建数组时要指定数组的大小数组只要创建,就不能修改了

(3)数组如何定义

int [] nums=new int[10];,

(4)使用数组(crud 增删改查)

使用数组的下标(索引)

数组名[下标]例如:nums[0] num[6]

下标从0开始,到数组中元素的个数(数组的长度)-1

(5)空数组 null[]

nullpointexception 空指针的异常(谁为空)

下标越界

ArraylndexOutofboundsException 上面的示例下标最大是9,假如num[10],则为越界,或下标为负数时,也属于越界。

(6)数组的优点

快速查询

(7)常见数组

字符串, 对象数组,哈希表

三.时间复杂度与空间复杂度

时间复杂度

O()描述的是算法运行的时间与输入的数据之间的关系

n是nums中的元素个数,算法与n呈线性关系

空间复杂度

添加操作时间复杂度为O(n).

删除操作时间复杂度为O(n).

resize的复杂度分析(均摊时间复杂度0)

改操作时间复杂度:已知索引O(1),未知索引O(n)

查操作时间复杂度:已知索引O(1),未知索引O(n)

四.复杂度的震荡

同时进行addLast和removeLast的操作

造成了对数组的扩充后又认为过多而减少,减少后又扩容的现象。

解决方法:使用懒人方法(lazy),即size=capacity/4时,说明需要对数组的容量进行减少,此时再进行缩减。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值