数据结构与算法
圆碌碌肥嘟嘟
嗨~
展开
-
常见排序算法
冒泡排序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 · 109 阅读 · 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 · 83 阅读 · 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 · 187 阅读 · 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 · 88 阅读 · 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 · 87 阅读 · 0 评论 -
二分搜索树BinarySearchTree
二叉树二叉树和链表一样,是动态数据结构class Node{ E e; Node left;//左孩子 Node right;//右孩子二叉树具有唯一根节点二叉树每个节点最多有两个孩子左右孩子均为空的节点称为叶子节点二叉树每个节点最多有一个父亲节点二叉树具有天然的递归结构:每个节点的左子树也是二叉树,每个节点的右子树也是二叉树二分搜索树二分搜索树是二叉树,二分搜索树中每个节点的值要大于其左子树所有节点的值,小于其右子树的所有节点的值,存储的元素必须有可比较性。二分搜索树的实现i原创 2020-05-10 15:31:34 · 137 阅读 · 0 评论 -
链表LinkedList
链表LinkedList真正的动态数据结构,也是最简单的动态数据结构,有助于我们更加深入的理解引用(指针),递归数据存储在“节点”(Node)中Class Node{ E e; Node next;}优点:真正的动态,不需要处理固定容量的问题缺点:丧失了随机访问的能力数组与链表的对比数组最好用于索引有语意的情况数字的最大优点是支持快速查询链表不适合用于索引有语意的情况链表的最大优点是动态链表的实现public class LinkedList<E> {原创 2020-05-09 11:18:01 · 100 阅读 · 0 评论 -
队列Queue
队列Queue队列也是一种线性结构相比数组,队列对应的操作是数组的子集队列只能从一端(队尾)添加元素,只能从另一端(队首)取出元素队列是一种先进先出的数据结构ArrayQueue的实现public interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); ...原创 2020-05-08 11:45:06 · 98 阅读 · 0 评论 -
栈Stack
栈Stack栈是一种线性结构相比数组,栈对应的操作是数组的子集只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶栈是一种后进先出的数据结构栈的应用:撤销,程序调用的系统栈栈的实现public interface Stack<E> { int getSize(); boolean isEmpty(); void push(E e); ...原创 2020-05-08 11:16:12 · 103 阅读 · 0 评论 -
数组Array
数组基础数组就是把数据码成一排进行存放数组最大的优点:快速查询数组最好应用于“索引有语意”的情况我们主要处理“索引没有语意”的情况数组的使用二次封装数组类public class Array<E> { private E[] data; private int size; //构造函数,传入数组的容量capacity构造Array pub...原创 2020-05-07 21:40:40 · 119 阅读 · 0 评论