
数据结构与算法
文章平均质量分 93
IdealSpring
为了面包和牛奶......
展开
-
二分查找算法(Java实现)
二分查找也称折半查找(Binary Search),它的查找效率很好。二分查找有一个要求是必须采用顺序存储结构,而且表种的元素是有序的。只有满足这个条件我们才能使用二分查找。 查找条件: 查找区域的左边界,小于等于查找区域的右边界 查找过程: 1. 循环条件 == 查找条件 2.计算序列中间下标位置 ...原创 2018-08-04 18:49:25 · 415 阅读 · 0 评论 -
欧几里得算法-求两个数的最大公因数
算法连续将两个数取余,直到余数为0,最后的非零余数就是最大公因数。 代码如下:import java.util.Scanner;/** * 欧几里得算法 求两个数的最大公因数 */public class EuclideanAlgorithm { public static void main(String[] args) { ...原创 2018-08-04 21:09:01 · 767 阅读 · 0 评论 -
Collection容器家族(读完ArrayList源码---小测试:自定义具有ArrayList各项功能的实现类)
前面的几篇文章对ArrayList的超类和本身以及接口进行了讲解,为了更加深入理解ArrayList集合使用数组存储数据的思想,特意实现了一个自定义的MyArrayList,源码如下:/** * 自定义ArrayList集合 * @param <E> */public class MyArrayList<E> implements Iterab...原创 2018-08-24 14:11:57 · 206 阅读 · 0 评论 -
Collection容器家族(LinkedList源码详解)
一、LinkedList在Collection集合体系中的位置 Linked:链表,List:线性表;加在一起,就能理解出LinkedList集合,底层是以链表为存储结构的集合,不过这个链表是双向链表。LinkedList是由AbstractSequentialList超类特化而来。AbstractSequentialList前面有讲过,他就是一个简洁的基于迭代的线性表,去除...原创 2018-09-09 17:47:12 · 261 阅读 · 0 评论 -
Collection容器家族(Vector讲解及Stack源码详解)
Vector讲解 Vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 Vector的数据结构和ArrayList差不多,它包含了3个成员变量:elementData , ...原创 2018-09-12 15:35:55 · 399 阅读 · 0 评论 -
Collection容器家族(读完LinkedList源码---小测试:自定义具有LinkedList各项功能的实现类)
前面的几篇文章对LinkedList的超类和本身以及接口进行了讲解,为了更加深入理解LinkedList集合使用存储数据的思想,特意实现了一个自定义的MyLinkedList,源码如下:(如有错误,还望多多指教import java.util.Iterator;import java.util.NoSuchElementException;import java.util...原创 2018-09-10 12:59:07 · 215 阅读 · 0 评论 -
树篇1-二叉查找树
一、概述 在看JDK源码时,看到关于map相关的,看到HashMap时,一部分源码与红黑树有关。索性就将树这种数据结构从头学一遍,记录下来,给自己还有他人留个参考和学习的资料。 涉及到使用二叉树进行排序、查找节点值、前序遍历、中序遍历、后续遍历(它们的递归实现和非递归实现)、删除节点、查找最大节点、查找最小节点。二、开讲下面为代码片段,在文档最后面有完整...原创 2018-10-12 10:47:26 · 221 阅读 · 0 评论 -
树篇2-平衡二叉查找树之AVL树
一、AVL树定义 在数据结构中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度差的绝对值不能超过一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次旋转来使得AVL树保持平衡。二、AVL树的特性1.任意一个根节点的左孩子小于根节点,右孩子大于根节点。2.每个结点的左右子树的高...原创 2018-10-17 21:10:01 · 238 阅读 · 0 评论 -
树篇3-平衡二叉查找树之红黑树
一、概述 红黑树是一种自平衡树在计算机科学中。二叉树的每个节点都有一个额外的位,该位通常被解释为节点的颜色(红色或黑色)。这些颜色位用于确保树在插入和删除期间保持近似平衡。通过以满足某些属性的方式用两种颜色之一绘制树的每个节点来保留平衡,这些属性共同限制树在最坏情况下的不平衡程度。修改树时,随后重新排列新树并重新绘制以恢复着色属性。这些属性的设计使得可以有效地执行这种重新排列和重...原创 2018-10-30 19:09:19 · 240 阅读 · 0 评论