
数据结构与算法
-乾坤-
一名普通的研发工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构基础JAVA 实现表、栈和队列
1.数据结构定义:相互之间存在一种或多种特定关系的数据元素的集合 由此可见数据结构可以分为两个部分,一种是数据的集合。另一种就是数据的关系。 2.抽象数据类型(ADT):带有一组操作的一些对象的集合。例如集合ADT,可以有add,remove,contains这样一些操作。 3.表ADT:第一个元素无前驱,最后一个元素无后继,其他元素都有一个前驱和一个后继。 表的操作可以有 insert原创 2017-12-01 11:07:30 · 273 阅读 · 0 评论 -
算法——递归
1.什么是递归? 递归就是在运行的过程中调用自己 2.构成递归需要的条件? 子问题要和原始问题相同,且更为简单 不能无限制的调用自己,需要有个出口 3.如何设计递归算法? 确定递归公式 确定边界也就是结束条件 4.快速排序的思想是:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1,处理结束...原创 2018-02-08 18:30:17 · 141 阅读 · 0 评论 -
Java算法概念
学习算法并不是一朝一夕的事情,需要坚持 1.算法的概念: 使用计算机有限的指令序列解决一个问题 如:可以是计算一个数值序列 可以是查找某一个数 可以是计算最短路径 这些都是算法,算法不一定是数值问题 2.算法和数据结构之间的区别和联系 算法是解决实际问题的,数据结构只是描述数据之间的关系 程序=数据结构+算法 3.算法的时间复杂度O(n) 遍历一个具有n个元素的数组,可以用O...原创 2018-02-08 13:12:09 · 661 阅读 · 0 评论 -
Java算法时间复杂度
1.时间复杂度最准确的方法是将算法执行的所有基本操作都计算一遍,但很多情况下这是行不通的 2.时间复杂度表示方法 用n来表示问题的规模 T(n)表示算法执行的时间量度 基本操作重复执行的次数一般都与问题规模有关系,它是问题规模的一个函数f(n) O(n)表示算法的时间复杂度 所以有公式T(n)=O(f(n)) f(n)是基本操作重复执行的次数 算法的时间复杂度跟算法中基本操作...原创 2018-02-08 16:06:57 · 615 阅读 · 0 评论 -
Java数据结构入门概念
1.什么是数据结构? 数据结构是数据存在的一种形式重点内容 数据结构有两种: 逻辑上的数据结构: 数据之间的逻辑关系 物理上的数据结构即存储结构:数据在计算机存储器的存储安排 逻辑结构可以分为四类:集合,线性结构,树形结构,图状结构 存储结构可以分为四类: 顺序:借助元素在存储器中的相对位置来表示元素之间的逻辑关系 如数组 链式:借助指示元素的存储地址来表示元素之间的逻辑关系如 l...原创 2018-02-08 12:51:15 · 176 阅读 · 0 评论 -
Java实现双链表
1.单链表结构简单,但是只能通过某一个节点只能获得他的后继节点,若想获得他的前驱节点,只能从他的头部遍历,时间复杂度为O(n) 2.双链表和单链表不同的是每一个节点既有指向其前驱节点的指针,又有指向其后继节点的指针...原创 2018-02-10 20:20:43 · 168 阅读 · 0 评论 -
Java实现单链表
1.定义两个接口 定义线性表的接口: 和顺序表接口一样 插入,删除,获取某个元素等一些基本操作定义单链表节点的接口: 获取节点数据域 设置节点数据域 2.单链表节点类 两个属性 数据域element 指针域next 3.单链表类的实现 插入操作 将数据元素e插入到object之后 插入前 obj节点 m节点 (obj的下一个节点) 插入后 obj节点 ...原创 2018-02-09 22:23:27 · 206 阅读 · 0 评论 -
Java线性表之顺序表
1.线性表的概念 线性结构;第一个元素(表头)无直接前驱,最后一个元素(表尾)无直接后继,其余元素都有一个直接前驱和直接后继 线性表中数据元素的个数n定义为线性表的长度,当n=0时线性表为空表,数据元素序号的取值范围是【0,n-1】 2.线性表是一个抽象的数学结构并不具有具体的物理形式,元素之间只具有一对一的线性关系,往线性表中存取元素不能像数组那样,需要找到这个元素的前驱和后继 数组中的...原创 2018-02-09 17:01:36 · 343 阅读 · 0 评论 -
Java线性表之链式表
链式表的概念: 一系列存储数据元素的节点通过指针串联在一起形成链,每个节点至少包含两个域:数据域和指针域(单链表有一个指针域,双链表有两个) Java中没有显式的使用指针,但实际上对象的访问就是使用指针来实现的,对象的引用就是替代指针的使用Java实现单链表的时候,一个节点本身就是一个对象, 数据域data可以使用一个Object的对象来实现,这个Object可以存储任何数据类型的元...原创 2018-02-09 18:29:22 · 464 阅读 · 0 评论 -
Java数组的数据结构
1.Java一维数组与内存结构 数组是相同类型变量的结合,可以通过下标来访问数组 一维数组 连续的内存 第一个元素下标为0 创建方式 int array[]=new int[10];//一旦指定长度就不可以再改变 int [] array={1,2,3,4}; 2.一维数组常见的操作 定义数组 int [] array1=new int [5]; int [] array2=...原创 2018-02-08 22:08:12 · 1272 阅读 · 0 评论 -
数据结构与算法分析(算法分析部分)
1.算法:对于一个问题,某种算法被确定是正确的,还要考虑这个算法的可行性,比如时间和内存。 2.数学基础: 时间复杂度: 如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数。T(n)称为这一算法的“时间复杂度”,当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。 我们常用大O表示法表示时间复杂度: 原则:忽略低阶项和常数, 如:T(原创 2017-12-05 20:28:47 · 352 阅读 · 0 评论 -
java 常见排序算法
常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 时间复杂度:O(n^2),最优时间复...转载 2018-04-20 13:51:33 · 139 阅读 · 0 评论