
数据结构
唐少爱科研
你要好好学习。
展开
-
快速排序 -- JAVA
《漫画算法--小灰的算法之旅》 每次排序的时候,设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。 package com.java.sort; import java.util.Arrays; public class QuickSort { /** * 分治 * * @param array 需要排序的数组 * @param startIndex 起始下标 * @para.原创 2020-12-11 00:50:32 · 136 阅读 · 0 评论 -
冒泡排序 -- JAVA
《漫画算法--小灰的算法之旅》 package com.java.sort; import java.util.Arrays; // 冒泡排序 public class BubblingSort { /** * 冒泡排序 * * @param array 需要排序的数组 */ public static void bubbling(int[] array) { for (int i = 0; i < array.le.原创 2020-12-10 23:36:41 · 117 阅读 · 0 评论 -
二叉堆-- JAVA
《漫画算法--小灰的算法之旅》 (1)完全二叉树是对一个有n个节点的二叉树,按照层级顺序编号,则所有节点的编号从1到n,如果这个树所有节点和同样深度的满二叉树的编号为从1到n的节点位置相同,则这个树是完全二叉树。(完全二叉树只需要保证最后一个节点之前的节点都齐全即可) (2)二叉堆本质是完全二叉树; (3)二叉堆分类:最大堆、最小堆;(父节点上的值比子节点的值大还是小) (4)二叉堆的根节点叫做堆顶;最大堆的堆顶是整个堆的最大元素、最小堆的堆顶是整个堆的最小元素; ...原创 2020-12-09 01:12:19 · 162 阅读 · 0 评论 -
二叉树遍历 -- JAVA
《漫画算法--小灰的算法之旅》 二叉树是典型的非线性数据结构,遍历时候需要把非线性关联的节点转换成一个线性序列,以不同的方式进行遍历,遍历出的顺序也不相同。 常用的遍历方式是:前序遍历、中序遍历、后序遍历;(个人理解所谓的前序、中序、后序指的是根节点遍历的顺序是前?是中?是后?) package com.java.array; public class BinaryTree { // 前序遍历 public static void preOrderTraveral(TreeNo.原创 2020-12-07 23:46:51 · 139 阅读 · 0 评论 -
栈和队列的基本操作 -- JAVA
《漫画算法--小灰的算法之旅》 (1)栈 栈(stack)是一种线性的数据结构,先入后出。最早进入元素存放的位置叫做栈底(botton),最后进入的元素存放的位置叫做栈顶(top)。 入栈(push):就是把新元素放入栈中,只允许从栈顶一侧放入元素,新元素位置将成为新的栈顶; 出栈(pop):就是把元素从栈中弹出,只允许栈顶元素出栈,出栈元素的前一个元素将会成为新的栈顶。 (2)队列 队列(queue)是一种线性的数据结构,先入先出。队列的出口端叫做队头(front),队列的入口...原创 2020-12-04 00:08:21 · 510 阅读 · 0 评论 -
单向链表的插入和删除--JAVA
《漫画算法--小灰的算法之旅》 今日主要学习链表的插入操作和删除操作 package com.java.array; public class LinkedList { private Node head; // 头节点指针 private Node last; // 尾节点指针 private int size; // 链表的实际长度 /** * 链表插入元素 * * @param data 插入元素 * @par..原创 2020-12-03 00:23:42 · 471 阅读 · 0 评论 -
数组指定位置插入数据--JAVA
《漫画算法--小灰的算法之旅》 每天学习一点数据结构,既是小灰的算法之旅,也是本人的算法之旅。 当前代码实现的是数组的指定位置插入数据的代码。 package com.java.array; /** * 向数组插入数据的思想 * 1、需要判断插入位置的下标是否是数组的正常范围之内 * 2、如果数组实际元素达到数组容量的上限,则对数组进行扩容 * 3、从右向左循环,将元素逐个向右移动,腾出的位置插入新的元素 * * 当前程序:不允许随意插入任意位置的数据,不然报错。 */ pub..原创 2020-12-02 00:09:51 · 4217 阅读 · 0 评论