![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构和算法
文章平均质量分 92
暂定以黑马算法课程为基础的学习笔记。全代码用Java语言实现
枸杞仙人
这个作者很懒,什么都没留下…
展开
-
链表的java实现(单向、双向链表,单向链表的反转)
链表链表单向链表单向链表API设计单向链表代码实现双向链表结点API设计双向链表API设计双向链表代码实现链表的复杂度分析链表反转快慢指针中间值问题有向链表是否有环问题有环链表入口问题循环链表约瑟夫问题链表虽然顺序表的查询很快,时间复杂度为O(1),但是增删的效率是比较低的,因为每一次增删操作都伴随着大量的数据元素移动。这个问题有没有解决方案呢?有,我们可以使用另外一种存储结构实现线性表,链式存储结构。链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元原创 2021-02-23 19:46:07 · 311 阅读 · 1 评论 -
顺序表的java实现
顺序表线性表线性表的特征线性表的分类顺序表API设计代码实现顺序表的遍历顺序表容量的可变顺序表的时间复杂度线性表线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。前驱元素:若A元素在B元素的前面,则称A为B的前驱元素后继元素:若B元素在A元素的后面,则称B为A的后继元素线性表的特征数据元素之间具有一种“一对一”的逻辑关系。第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一原创 2021-02-09 15:34:14 · 179 阅读 · 0 评论 -
排序的稳定性
排序稳定性定义意义常见算法稳定性冒泡排序选择排序插入排序希尔排序归并排序快速排序定义数组arr中有若干元素,其中A元素和B元素相等,并且A元素在B元素前面,如果使用某种排序算法排序后,能够保证A元素依然在B元素的前面,可以说这个该算法是稳定的。意义如果一组数据只需要一次排序,则稳定性一般是没有意义的,如果一组数据需要多次排序,稳定性是有意义的。例如要排序的内容是一组商品对象,第一次排序按照价格由低到高排序,第二次排序按照销量由高到低排序,如果第二次排序使用稳定性算法,就可以使得相同销量的对象依旧保原创 2021-02-08 15:50:36 · 441 阅读 · 0 评论 -
高级排序java实现(希尔、归并、快速)
高级排序希尔排序排序原理API设计代码实现时间复杂度分析归并排序排序原理归并原理API设计代码实现时间复杂度分析快速排序排序原理API设计切分原理代码实现快速排序和归并排序的区别时间复杂度分析基础排序,包括冒泡排序,选择排序还有插入排序的时间复杂度都是O(N^2),而平方阶随着输入规模的增大,时间成本将急剧上升,所以这些基本排序方法不能处理更大规模的问题,我们需要一些高级的排序算法,争取降低算法的时间复杂度最高阶次幂。希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的原创 2021-02-07 23:28:46 · 156 阅读 · 0 评论 -
简单排序java实现(冒泡、选择、插入)
简单排序Comparable接口冒泡排序排序原理冒泡排序API设计代码实现时间复杂度分析选择排序排序原理选择排序API设计代码实现时间复杂度分析插入排序排序原理插入排序API设计代码实现时间复杂度分析排序是非常常见的一种需求,通常我们会接收一些数据元素,然后把这些数据元素按照一定的规则进行排序。在java的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如List,Set,Map,Math等等,都是以API的方式提供,这种方式的好处在于一次编写,多次使用。我们借鉴jdk的方式,也把排序算原创 2021-02-05 20:05:00 · 172 阅读 · 0 评论 -
算法分析(时间复杂度分析和空间复杂度分析)
算法分析算法的时间复杂度分析函数渐进增长算法时间复杂度大O记法常见的大O阶函数调用的时间复杂度分析最坏情况算法的时间复杂度分析常见内存占用算法空间复杂度 研究算法的目的就是如何花更少的时间,如何占用更少的内存去完成相同的需求。我们要学习有关算法时间耗费和算法空间耗费的描述和分析以定量分析算法的优劣。有关算法时间耗费分析,我们称之为算法的时间复杂度分析,有关算法的空间耗费分析,我们称之为算法的空间复杂度分析。算法的时间复杂度分析我们要计算算法时间耗费情况,首先我们得度量算法的执行时间,那么如何度量原创 2021-02-03 17:26:39 · 1430 阅读 · 0 评论 -
数据结构与算法概述
数据结构与算法概述什么是数据结构数据结构的分类逻辑结构集合结构线性结构树结构图结构物理结构/存储结构顺序存储结构链式存储结构什么是算法算法有什么用案例1:计算1到100的和。案例2:计算10的阶乘什么是数据结构数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。其实就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据。数据结构的分类逻辑结构逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互关系分类,也是我们原创 2021-02-02 21:09:34 · 106 阅读 · 0 评论