
《数据结构与算法》
记录数据结构与算法。
CoderBruis
菜是原罪
展开
-
(Java学习笔记13)二叉树---删除二叉树节点
删除二叉树节点删除节点是二叉树操作中最复杂的。在删除之前首先要查找要删的节点,找到节点后,这个要删除的节点可能会有三种情况需要考虑。1.该节点是叶子节点,没有子节点。要删除叶子节点,只需要改变该节点的父节点的引用值,将指向该节点的引用设置为null就可以了。2.该节点有一个子节点。改变父子节点的引用,将其直接指向要删除节点的子节点。3.该节点有两个子节点。要删除有两个子转载 2017-03-05 09:46:47 · 1306 阅读 · 0 评论 -
(Java学习笔记4)线性查找和二分法查找
public class MyOrderArray { private long[] arr;//表示有效数据的长度 private int elements;//数组长度 public static void main(String[] args){ } public MyOrderArray(){ arr=new long[50]; } public MyOrd转载 2017-02-25 15:56:09 · 539 阅读 · 0 评论 -
(Java笔记学习2)数组
public class MyArray { private long[] arr;//表示有效数据的长度 private int elements;//数组长度 public static void main(String[] args){ } public MyArray(){ arr=new long[50]; } public MyArray(int m转载 2017-02-25 14:46:05 · 334 阅读 · 0 评论 -
(Java笔记学习3)有序数组的构建
MyOrderArray{ private long[] arr;//表示有效数据的长度 private int elements;//数组长度 public static void main(String[] args){ } public MyOrderArray(){ arr=new long[50]; } public MyOrderArray(int转载 2017-02-25 15:46:18 · 428 阅读 · 0 评论 -
(Java学习笔记1)链表
class Link{ class Node{ private String data;//数据内容 private Node next; public Node(String data){ this.data=data; } public void add(Node newNode){ if(this.next==null){ this.next=new转载 2017-02-25 16:07:46 · 338 阅读 · 0 评论 -
基础排序算法(一)——用Java实现的冒泡排序算法以及优化思路
一、冒泡排序public class BubbleSort { public static void sort(long[] arr){ long tmp=0; for(int i=0;i<arr.length-1;i++){ for(int j=arr.length-1;j>i;j--){ if(arr[j]<arr[j-1]){ //进行交换 tmp原创 2017-02-25 16:38:36 · 342 阅读 · 0 评论 -
基础排序算法(二)——选择排序
--选择排序public class SelectionSort { public static void sort(long[] arr){ int k=0; long tmp=0; for(int i=0;i<arr.length-1;i++){ k=i;//令K指向最小的数 for(int j=i;j<arr.length;j++){ if(arr[j]<原创 2017-02-26 08:12:45 · 317 阅读 · 0 评论 -
基础排序算法(三)——插入排序及其优化思路
插入排序public class InsertSort { public static void sort(long[] arr){ for (int i = 1; i < arr.length; i++) { long tmp = arr[i];//当前值 int k = i; //记录位置 f原创 2017-02-26 09:53:31 · 342 阅读 · 0 评论 -
(Java学习笔记6)栈的构建与应用
栈的构建与应用public class MyStack { //底层实现是一个数组,栈遵循先进后出,后进先出 private long[] arr; private int top; /* * 默认的构造方法 * * */ public MyStack(){ arr=new long[10]; top=-1; } /* * 带参数构造方法,参数为数组初始化大转载 2017-02-26 11:20:22 · 403 阅读 · 0 评论 -
(Java学习笔记7)列队的构建与应用
/* * 列队类 * */public class MyQueue { //底层使用数组 private long[] arr; //有效数据的大小 private int elements; //队头 private int front; //队尾 private int end; /* * 默认构造方法 * */ public MyQueue(){ arr转载 2017-02-26 11:22:48 · 551 阅读 · 0 评论 -
(Java笔记学习8)双端链表和双向链表
双端链表和双向链表一、什么是双端链表。 链表中保存着对最后一个链节点引用的链表。二、从头部进行插入 要对链表进行判断,如果为空则设置尾节点为新添加的节点。三、从尾部进行插入 如果链表为空,则直接设置头结点为新添加的节点,否则设置尾节点的后一个节点为新添加节点。四、从头部进行删除 判断头结点是否为下一个结点,如果没有则设置为结点转载 2017-02-27 17:02:46 · 1212 阅读 · 0 评论 -
(Java学习笔记9)递归的应用
一、斐波那契数列public class Fibonacci { public static int getNumber(int n){ if(n==1){ return 0; }else if(n==2){ return 1; }else{ return getNumber(n-2)+getNumber(n-1); } }}public class Te转载 2017-03-02 21:22:14 · 373 阅读 · 0 评论 -
(Java学习笔记10)希尔排序
希尔排序 一、希尔排序的产生* 希尔排序是由科学家Donald L.Shell提出来的,希尔排序基于插入排序, 并添加了一些新的特性,从而大大的提高插入排序的执行效率。 二、插入排序的缺陷,多次的移动* 加入一个很小的数据在靠右端的位置上,那么要将该数据排序到正确的位置上, 则所有的中间数据都需要向右移动一位。三、希尔排序的优点* 希尔排转载 2017-03-03 13:08:37 · 387 阅读 · 0 评论 -
(Java学习笔记11) 快速查询
快速排序 一、快速排序的思想。* 快速排序通过将一个数组划分成两个子数组,然后通过递归调用自身为 每一个子数组进行快速排序来进行。 二、如何进行划分。* 设定关键字,将比关键字小的数据放在一起,比关键字大的放在另外一组。 三、如何自动设定关键字* 设置数组最右端的数据为关键字四、代码实现快速排序。public class QuickSort { /* *转载 2017-03-03 13:12:31 · 622 阅读 · 0 评论 -
(Java学习笔记12)二叉树---(插入、查询、遍历)
二叉树 * 一、为什么需要使用树。 有序数组插入数据项和删除数据项太慢。 链表查找数据太慢 在树种能非常快速的查找数据项、插入数据项和删除数据项。 * 二、树的结构 (此图省略) * 三、路径 顺着连接节点的边从一个节点到另一个节点,所经过的节点顺序排列称为路径。 * 四、根 树最上面的节点称为根节点。一棵树只有一根。而且从根到转载 2017-03-04 21:02:57 · 412 阅读 · 0 评论 -
KMP算法最浅显理解
最近,有点懒了,好久都没来写博客了。因为最近都在学习数据结构和算法,所以想把基础打牢固了,再回来进行反馈,把自己学的东西写出来,以便加深自己的理解。下面看到两篇比较不错的讲解KMP算法的博文,转载过来,方便自己的学习详解KMP算法 KMP算法最浅显理解——一看就明白 ...转载 2018-11-22 12:05:25 · 371 阅读 · 0 评论