1.增加函数:表示问题(n)大小与咱们但愿最优化的值之间的关系,该函数表示了该算法的时间复杂度或空间复杂度html
2.在n很小时算法差异很小,可是当n很大时,增加函数之间的差异就很明显。前端
3.渐进复杂度称为算法的阶次(order)。git
4.O()记法称为大O记法。算法
5.算法的阶次是忽略该算法的增加函数中的常量和其余次要项,只保留主项而得出的。后端
6.无论问题是大是小,运行赋值语句和if语句一次,其复杂度就为O(1)。数组
7.全部具备相同阶次的算法,从运行效率的角度来讲都认为是等价的。数据结构
8.增加函数及其渐进复杂度
函数
9.嵌套循环的复杂度度分析:内层循环的复杂度乘之外层循环的复杂度。学习
10.循环运行的复杂度分析:肯定该循环体的阶次n,而后用该循环要运行的次数乘以它。循环的时间复杂度等于循环的复杂度乘以该循环的次数。测试
1.栈是一种线性集合,遵循后进先出的原则。
操做 | 描述 |
---|---|
push | 添加一个元素到栈的顶部 |
pop | 从栈的顶部移除一个元素 |
peek | 查看栈顶部的元素 |
isempty | 肯定栈是否为空 |
size | 肯定栈的元素数目 |
3.栈的全部操做都是在一端进行的
4.类型兼容性:把一个对象赋给引用的特定赋值是否合法。类型检查:Java会自动在编译时标记出不合法的赋值。
5.可利用继承和多态来建立能够储存任意类型的对象的集合。
6.泛型:定义一个类,能够储存、操做和管理一些实例化以前没有制定类型的对象。
7.栈是计算后缀表达式的理性数据结构。
8.堆栈:堆栈是一种之后进先出方式(LIFO)管理数据的线性数据结构。
1.对象引用变量能够用来建立链式结构。
2.在链表中储存的对象泛称为该链表的结点。
3.链表由一些对象构成,其中每一个对象指向了链表中下一个对象。
4.在Java语言中,全部动态建立的对象都来自于一个名为系统堆或自由储存的内存区
5.访问元素:惟一方法是从第一个元素开始,顺着该链表往下进行。
6.插入结点: 结点能够插入到链表的前端,中间和后端,改变引用顺序是维护链表的关键。
7.删除结点:无论删除哪一个结点,都要保证链表的完整性。
1.队列是一种线性集合,其元素从一端加入,从另外一端删除,按先入先出的方式处理。
2.前端(队首):front、head,末端(队尾):rear、tail,
操做 | 说明 |
---|---|
enqueue | 向队列末端添加一个元素 |
dequeue | 从队列前端删除一个元素 |
first | 考察队列前端的那一个元素 |
isEmpty | 断定队列是否为空 |
size | 断定队列中的元素数目 |
toString | 返回队列的字符串表示 |
5.Java集合API提供了Queue接口,由多个类来实现。
6.栈的首要做用是颠倒顺序,队列的首要做用是保持顺序。
1.指向首元素的引用head,指向链表末的引用tail,整型变量count来跟踪队列中的元素数目。
2.必须一直认真地,精准地维护特殊状况下地引用
3.对于一个空队列,head,tail引用都为null,count则为0.
4.enqueue:将当前末元素的next引用设置指向这个新元素,从新将tail设置为指向这个新添加的末元素。该操做的复杂度为O(1).
5.dequeue:先判断队列是否有元素,若是没有,抛出异常EmptyCollectionException,若是有元素,则正常删除第一个元素,若是只有惟一元素,则删除队列元素后,队列就为空,把tail引用设置为null。该操做复杂度为O(1).
6.enqueue和dequeue操做做用于队列的对立端。
1.因为队列操做会修改集合的两端,所以将一端固定于索引0处要求移动元素。
2.因为队列处理会影响到该集合的两端,所以从队列中删除元素的时候,该策略要求移动元素。
3.非环形数组实现的元素移位,将产生O(n)的复杂度。
4.把数组看做是环形的,能够除去在队列的数组实现中把元素移位的须要。
问题1:队列、链表和堆栈三者的问题
问题1解决方案:队列和堆栈是两个相似链表的线性数据结构,但在使用时有更多的限制。对于通常的链表,能够经过链表的任意位置插入和删除节点进行修改,可是队列只能在一端加入节点(入队)(入栈),在另外一端一处节点(出队)(出栈),所以队列是先进先出(FIFO)数据结构,堆栈是后进先出(LIFO)数据结构。
问题2:节点是什么意思。
问题2解决方案:能够说是结构体,节点就是一个带有指针指向的结构体,把相邻的点关联起来,能够把链表想象成火车,节点就是其中一节节的车箱,经过通道和先后车箱相连。
问题1:在实现ArrayOrderedListTest测试时,我遇到了显示最后一个数字时显示为null。
问题1解决方案:我对前面ArrayList类检查时,发现我在显示last时,将rear-1不当心写成rear了,因此它所读取的是最后一个后边的,因此确定为空
点评过的同窗博客和代码
教材第12章、第14章和教材第15章
完成程序设计项目,至少完成pp14.1,pp14.7,pp15.1,pp15.
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 109/109 | 2/2 | 20/20 | |
第2、三周 | 729/838 | 2/4 | 47/67 | |
第四周 | 750/1588 | 2/6 | 22/89 | |
第五周 | 1588/2698 | 2/7 | 34/133 | |
第六周 | 1350/4035 | 2/9 | 24/157 | |
第九周 | 4701/7399 | 5/14 | 97/254 |