数据结构
文章平均质量分 91
过道
不断思考,不断进步,不断分享,希望可以帮助到像我一样迷茫的人,也希望你认真对待每一点知识的积累。
展开
-
算法分析(学习笔记)
前言He calculated just as men breathe, as eagles sustain themselves in the air. ----Francois Arago算法分析两个主要任务 1.正确性 (不变性 单调性) 2.复杂度。小知识:因为C++等高级原创 2018-01-22 16:10:18 · 690 阅读 · 0 评论 -
ArrayList源码详解
文章目录List分析List接口所有代码List核心代码AbstractList:减少实现List所需精力ArrayList源码解析ArrayList的知识ArrayList的内部结构ArrayList的初始化ArrayList的改操作ArrayList的查询元素ArrayList 删除元素ArrayList的增加ArrayList实现Collection中的一些必要方法ArrayList全部代码...原创 2019-05-31 08:56:41 · 484 阅读 · 0 评论 -
ArrayList、LinkedList、Vector的区别。
LinkedList与其他二者的区别首先,LinkedList是相对于其他两个最大不同的,因为底层实现就完全不是一种思路。ArrayList,Vector 的底层实现是扩容数组,而LinkedList的底层实现是双向链表。具体源码解析请看我的这篇博客:ArrayList和LinkedList的源码解析tip:由于LinkedList 是双向链表,可以用来代替过时的Stack类....原创 2018-09-04 09:37:50 · 175 阅读 · 0 评论 -
线性表ArrayList和LinkedList源码详解。
List描述线性表抽象接口,所有线性表应该在实现这个接口的基础上进行操作。接口package list;/** * Description: 线性表的接口,使用泛型保证类型 * * @ClassName: List * @author 过道 * @date 2018年8月13日 上午10:45:13 */public interface ListInterfac...原创 2018-08-31 09:41:47 · 393 阅读 · 0 评论 -
数据结构:“包”的学习与数组实现和链式实现,java语言描述。
前言包是一个抽象数据类型,许多java数据结构书籍都拿其当做入门数据结构(如:《算法(第四版)》,《数据结构与抽象(JAVA语言描述)》等)。阅读此篇文章需要java基础知识(简单语法,泛型及基本类库的使用)定义:包这一抽象概念与生活中的包极其类似,允许其中放入重复的事物,而且我们不关心其中的次序。// 简单说,就是可重复,不关心顺序。注:常用的 foreach 中就隐含着包...原创 2018-08-08 19:46:08 · 405 阅读 · 0 评论 -
队列的链式实现和循环数组实现-----------------------------java语言描述
Java有经典的链式队列,循环队列,也有高级应用常使用的双向队列,优先队列。本文从低级实现介绍到java类库中的相关队列。队列的接口如下所示:public interface QueueInterface <T>{ //所有队列的实现必须实现这个接口 public void enqueue(T newEntry); public T dequeu...原创 2018-08-13 15:48:07 · 304 阅读 · 0 评论 -
快速排序详解 ------------Java语言描述
1.1 用具体例子说明十人排序问题:你先吆喝一声,比第一个人低的所有人都站在第一名前面,其余人站后面 然后队伍就被你分成了两个部分,而且原来队伍的第一名的位置将被确定为切割点,不再改动。 对于前面的队伍,你进行如下操作 你先吆喝一声,比第一个人低的所有人都站在第一名前面,其余人站后面 然后队伍就被你分成了两个部分,而且原来队伍的第一名的位置将被确定为切割点,不再改动。 对...原创 2018-08-12 20:35:34 · 495 阅读 · 0 评论 -
归并排序详解,Java版描述。
为了简单起见,使用int类型数组讲述归并算法,后面扩展到其他类型的排序。目录1.2 排序思想1.3 见名知意1.4 抽象过程1.5 实例操作1.6 代码实现(JAVA版本)1.6.1调用排序部分1.6.2递归实体1.6.3合并两个数组1.7 代码实现(C语言版)1.8 算法分析1.9全部源码1.1 用具体例子说明十人排序问题。将十人均分...原创 2018-08-11 14:53:27 · 3851 阅读 · 1 评论 -
双端队列,java语言描述并带类库分析.
从接口到实现,帮读者有效理解java类库中的双向队列和优先队列,窥探底层的内部,帮助锻炼思维。轮子可以不会造,但会的话一定更好。原创 2018-08-14 11:18:14 · 206 阅读 · 0 评论 -
栈(stack) C语言实现 详解
栈是数据结构中较为简单的结构体,是一种操作收到限制的线性表.但简单不代表没用,毕竟数组还贼简单呢.谁敢说数组没用?栈栈的理论栈是一个先进后出的结构,类似于堆盘子,先放到地上的盘子最后被取走(默认只能取走一个盘子)栈其实就是操作受限的线性表,只有一个口,每一次操作时,这个口可以当出口也可以当入口. 例如:水桶,注入水时,水桶的头当做入口,倒水时,水桶的头当做出口栈的图解.在图解之前,先举一个例...原创 2018-05-08 21:12:25 · 103197 阅读 · 28 评论 -
最大子列和(参考浙大-数据结构-MOOC)
参考中国大学Mooc (浙江大学)->数据结构我把陈越姥姥讲的最大子列和记录一下,以备不时之需."最大子列和" 问题给一个数组,让求出其中所有子列数据的和的Max 值.1.暴力求解拿到这个问题的第一瞬间想到的几乎都是暴力, 遍历所有的子序列,找到其中最大值//暴力求解int MaxSubseqSum1(int A[], int n){ in原创 2018-04-18 16:49:01 · 422 阅读 · 0 评论 -
选择排序,插入排序,冒泡排序超简单教程(能有效的区分)。Java语言描述
首先,我相信一个东西最重要的是思想,所以,本文重点关注这三个排序背后的思想。希望能帮你理解并分清这四个排序。注:n代表一组数的个数.i 代表任意的某个数( 0 < i < n + 1).使用从小到大,从前到后的排序。(实际中,顺序完全可以相反,此时为了教学方便)前修知识:时间复杂度。 数组下标从0开始。如何交换两个数。目录1.选择排序1.1 用具体...原创 2018-03-08 20:24:36 · 1551 阅读 · 0 评论 -
单向链表学习(尾插法) 含简单的增,删,查,排序;
序言下学期学数据结构,这学期老师让复习C语言,先练练单链表.。方便理解起见,设为int类型的单链表,代码正文(包含了链表的初始化,查询,尾部新增,插入,删除,排序)#include #include typedef struct node{ int data; struct node *next;}node;node *creatLink(){原创 2018-01-25 20:46:58 · 1183 阅读 · 1 评论 -
数据结构---------树详解,java语言描述
文章目录二叉树1.常用的二叉树概念1. 满二叉树2. 完美二叉树2. 二叉树的两种物理存储.3.二叉树的应用2.自平衡树4. 二叉树的遍历5. 二叉堆二叉堆的自我调整堆的代码:二叉树 在计算机中,常常需要用到树状存储关系,比如,家族树,企业管理树等。 其中,最常用的便是二叉树了,二叉树的定义:树的每个节点最多只有两个孩子节点。(阿里二面曾考察过)其中最有名的有两个概念:满二...原创 2019-05-29 12:11:33 · 886 阅读 · 0 评论