![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 56
此人已下架
临渊羡鱼,不如退而结网。
展开
-
归并排序
归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 package Sort; public class MergeSort { private int num = 1; public MergeSort(int[] data) { Sort(data, 0, da原创 2016-05-06 18:49:38 · 723 阅读 · 0 评论 -
线性表——顺序表
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; /** * 顺序表 * @author VESON * * @param */ public class SequeceList { private static int DEFAULT_SIZE = 16; private Object[] tabl原创 2016-04-13 15:54:27 · 337 阅读 · 0 评论 -
线性表——链表
import java.util.Iterator; public class LinkList { int length; //计算链表长度 private LNode header; private LNode tail; /** * 构造有头尾结点的双向链表,链表长度为0 */ public LinkList() { header = new LNode();原创 2016-04-13 16:01:09 · 414 阅读 · 0 评论 -
栈——数组实现
public class SequeceStack { private static int DEFAULT_SIZE = 16; private Object[] stack; private int n; //栈中实际元素个数 private int max_capacity; /** * 以默认值构造栈 */ public SequeceStack() { this(原创 2016-04-13 20:37:40 · 486 阅读 · 0 评论 -
栈——链表实现
首先创建栈结点类 public class StackNode { StackNode pre; StackNode next; T data; /** * 构造空结点 * @param args */ public StackNode() { this(null, null, null); } /** * 传入数据构造结点 * @param arg原创 2016-04-13 20:40:42 · 680 阅读 · 0 评论 -
队列——链表实现
首先建立队列结点类: public class QueueNode { QueueNode next; T data; /** * 指定相关值构造队列结点 * * @param args */ public QueueNode(T data, QueueNode next) { this.data = data; this.next = next; }原创 2016-04-14 16:11:26 · 411 阅读 · 0 评论 -
二叉树
二叉树的创建,添加和遍历都比较简单,而删除方面却比较繁琐。 public class BinTree { private int n; //树中元素个数 private BTNode root; public BinTree() { this.n = 0; this.root = null; } /** * 判断二叉树是否为空 */ public bool原创 2016-04-18 17:04:07 · 327 阅读 · 0 评论 -
插入排序
实现原理: 直接插入排序:是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 二分法插入排序:利用二分法查找未排序数据在有序序列中的位置,比起直接插入排序,减少了比较次数。 时间复杂度:直接插入排序和二分法插入排序都是O(n^2) 空间复杂度:O(1) public class InsertionSort { private static原创 2017-06-14 10:56:41 · 427 阅读 · 1 评论 -
二叉堆
关键点: 1)堆分为小根堆和大根堆,根结点大于子结点叫堆,反之为小根堆 2)堆由数组构建而成 3)二叉堆中子结点与父结点的关系: · 父结点下标 = (子结点下标-1) / 2 · 左子结点下标 = 父结点下标 * 2 + 1 · 右子结点下标 = 父结点下标 * 2 + 2 4) 对于堆的操作有插入、移除、调整 大根堆的java实现: public class Max原创 2017-06-19 20:43:29 · 488 阅读 · 0 评论 -
冒泡排序
思想:依次比较某个数和它相邻的后一个数,如果顺序不正确则交换。 冒泡排序没一外层循环都会使一个数找到它应该存在的位置。 其时间复杂度为O(N^2) import java.util.Scanner; public class BubbleSort { public void sort(int[] arr) { for(int i=0; i<arr.length-1;原创 2016-04-21 16:48:22 · 460 阅读 · 0 评论 -
LRU队列的实现
package Queue; public class LRUQueue { private T[] queue = null; private int num; //队列中元素的个数 /** * 指定大小构造队列 * @param capacity */ public LRUQueue(int capacity) { this.num = 0; queue = (T原创 2016-05-08 16:52:55 · 2355 阅读 · 2 评论 -
快速排序
import java.util.Scanner; public class QuickSort { static int arr[]; public void sort(int left, int right) { if(left>right) return; int i = left, j = right, temp; while(i<j) { while(j>i &&原创 2016-04-21 16:53:44 · 444 阅读 · 0 评论