![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
圆碌碌肥嘟嘟
嗨~
展开
-
常见排序算法
冒泡排序 import java.util.Arrays; public class BubbleSort { public static void sort(int [] arrs){ //1.包含所有参与游戏的人物 for(int i = arrs.length - 1;i > 0;i --){ //2.控制交换手绢的过程 for(int j = 0;j < i;j ++){原创 2020-06-13 21:26:57 · 114 阅读 · 0 评论 -
优先队列PriorityQueue
优先队列PriorityQueue 出队顺序和入队顺序无关,和优先级相关 public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront(); } 基于最大堆的优先队列的实现 public class PriorityQueue<E extends Comparable<E>> imp原创 2020-05-12 20:03:46 · 89 阅读 · 0 评论 -
最大堆MaxHeap
最大堆MaxHeap 二叉堆是一颗完全二叉树,完全二叉树就是把元素排序排列成树的形状,最大堆中某个节点的值总是不大于其父节点的值。 最大堆MaxHeap的实现 public class MaxHeap<E extends Comparable<E>> { private Array<E> data; public MaxHeap(int capacity){ data = new Array<>(capacity);原创 2020-05-12 19:48:32 · 193 阅读 · 0 评论 -
映射Map
映射Map 映射是存储(键,值)数据对的数据结构 根据键(key),寻找值(Value) 非常容易使用链表或者二分搜索树实现 public interface Map<K,V> { void add(K key,V value); V remove(K key); boolean contains(K key); V get(K key); void set(K key,V newValue); int getsize(); boolea原创 2020-05-11 14:27:07 · 95 阅读 · 0 评论 -
集合Set
BSTSet的实现 public class BSTSet<E extends Comparable<E>> implements Set<E> { private BST<E> bst; public BSTSet(){ bst = new BST<>(); } @Override public void add(E e) { bst.add(e); }原创 2020-05-11 11:41:04 · 93 阅读 · 0 评论 -
二分搜索树BinarySearchTree
二叉树 二叉树和链表一样,是动态数据结构 class Node{ E e; Node left;//左孩子 Node right;//右孩子 二叉树具有唯一根节点 二叉树每个节点最多有两个孩子 左右孩子均为空的节点称为叶子节点 二叉树每个节点最多有一个父亲节点 二叉树具有天然的递归结构:每个节点的左子树也是二叉树,每个节点的右子树也是二叉树 二分搜索树 二分搜索树是二叉树,二分搜索树中每个节点的值要大于其左子树所有节点的值,小于其右子树的所有节点的值,存储的元素必须有可比较性。 二分搜索树的实现 i原创 2020-05-10 15:31:34 · 141 阅读 · 0 评论 -
链表LinkedList
链表LinkedList 真正的动态数据结构,也是最简单的动态数据结构,有助于我们更加深入的理解引用(指针),递归 数据存储在“节点”(Node)中 Class Node{ E e; Node next; } 优点:真正的动态,不需要处理固定容量的问题 缺点:丧失了随机访问的能力 数组与链表的对比 数组最好用于索引有语意的情况 数字的最大优点是支持快速查询 链表不适合用于索引有语意的情况 链表的最大优点是动态 链表的实现 public class LinkedList<E> {原创 2020-05-09 11:18:01 · 107 阅读 · 0 评论 -
队列Queue
队列Queue 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 队列只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 队列是一种先进先出的数据结构 ArrayQueue的实现 public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); ...原创 2020-05-08 11:45:06 · 102 阅读 · 0 评论 -
栈Stack
栈Stack 栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶 栈是一种后进先出的数据结构 栈的应用:撤销,程序调用的系统栈 栈的实现 public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); ...原创 2020-05-08 11:16:12 · 110 阅读 · 0 评论 -
数组Array
数组基础 数组就是把数据码成一排进行存放 数组最大的优点:快速查询 数组最好应用于“索引有语意”的情况 我们主要处理“索引没有语意”的情况数组的使用 二次封装数组类 public class Array<E> { private E[] data; private int size; //构造函数,传入数组的容量capacity构造Array pub...原创 2020-05-07 21:40:40 · 122 阅读 · 0 评论