![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 68
proheart
这个作者很懒,什么都没留下…
展开
-
Algorithm--Insertion Sort
插入排序package practice1;public class InserSort { /** * Insertion Sort: 每次把一个项按照关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部插入完成 * 时间复杂度:T(n) = O(n^2) * 在输入规模较小的情况下,使用插入排序 * @param array */ public static原创 2016-01-18 15:19:37 · 480 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH1
/** * 数据结构的特性 ********************************************************************************************** ****************************************************************************************原创 2016-06-21 05:28:30 · 289 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH2无序数组
/** * 本章目标: * 1.自制数组类 * 2.有序数组:按关键字升降序排列;二分法查找 * 3.分析有序数组。大O表示法 *//** * 自制数组类 书中有的地方有错误,本程序以修改 */class HighArray { private long[] a; private int nElements;// 维护array的实际元素个数 public原创 2016-06-21 05:32:26 · 354 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH2有序数组
/** * 上个例子是无序数组,并且没有考虑重复元素的情况。 * 下面来设计一个有序数组,我们设定不允许重复,这样提高查找的速度,但是降低了插入操作的速度。 * 1.线性查找 * 2.二分查找 * 有序数组优点:查找比无序数组快 * 缺点:插入操作由于所有靠后的数据都需要移动来腾开空间,所以插入比较慢 * 有序数组和无序数组删除操作都很慢,因为数据项必须向前移动来填补已删除原创 2016-06-21 05:34:07 · 276 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH3简单排序
class ArrayBub { private long[] arr; private int nElement; public ArrayBub(int size) { arr = new long[size]; nElement = 0; } @Override public String toString() { if (nElement == 0) re原创 2016-06-21 05:35:25 · 334 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-1栈的实现
class StackX{ private int maxSize; private long[] stackArray; private int top; public StackX(int size){ maxSize = size; stackArray = new long[maxSize]; top = -1;//初始化栈顶指针为-1,表示栈中无元素 } @Ove原创 2016-06-21 05:37:07 · 355 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-2用栈实现字符串反转
import java.io.BufferedReader;import java.io.InputStreamReader;//用栈来实现一个字符串逆序算法/** * 数据结构:栈 */class StackW{ private int maxSize; private char[] stackArray; private int top; public StackW(in原创 2016-06-21 05:38:56 · 483 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-3用栈实现分隔符匹配
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * 利用栈来实现分隔符匹配: 分隔符包括{},[], (),每个左分隔符要和右分隔符匹配,也就是说每个'{'后面要有'}'来匹配,以此类推。 * 同时,在字符串中后出现的左分隔符应该比早出现的左分隔符原创 2016-06-21 10:32:32 · 369 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-6优先级队列
/** * 优先级队列 * 效率:插入O(n),删除O(1).第12章介绍如何通过堆来改进insert时间 */class PriorityQueue { private int maxSize; private long[] pQueue; private int nItems; public PriorityQueue(int size) { maxSize = siz原创 2016-06-22 12:45:34 · 458 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-4循环队列
/** * 循环队列 */class Queue { private int maxSize; private long[] queue; private int front; private int rear; private int nItems; public Queue(int size) { maxSize = size; queue = new long[m原创 2016-06-22 09:29:51 · 319 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-5不带计数字段的循环队列
第四章涉及三种数据存储类型:栈,队列,优先级队列1.概括:他们比数组和其他数据存储结构更为抽象,主要通过接口对栈,队列和优先级队列进行定义。这些接口表明通过他们可以完成的操作,而他们的主要实现机制对用户来说是不可见的。(比如栈可以使用数组实现,也可以使用链表实现)2.栈:先进后出。数据项进栈和入栈的时间复杂度都是O(1),也就是说栈操作所消耗的时间不原创 2016-06-22 10:28:53 · 427 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH6-递归-1递归实现全排列字符串
public class AnagramDemo { static int size; static char[] arrChar; static List resultList = new ArrayList<>(); public static void main(String[] args) throws IOException { System.out.println("en原创 2016-07-05 01:32:15 · 3779 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-9实现带迭代器的链表
/** * 节点类 */class LinkNode { private long data; public LinkNode next; public LinkNode(long d) { this.data = d; } public String toString() { return String.valueOf(this.data); }}/** *原创 2016-07-04 01:43:45 · 3786 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-8实现双链表,头部和尾部插入和删除
/** * 双向链表节点类 */class DoubleLinkNode { public long data;// 数据 public DoubleLinkNode next;// next指针 public DoubleLinkNode previous;// previous指针 public DoubleLinkNode(long d) { this.data = d;原创 2016-07-03 11:47:53 · 3422 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH4-6栈结构实现中缀转后缀
/** * 中缀表达式转换成后缀表达式: 从输入(中缀表达式)中读取的字符,规则: 操作数: 写至输出 左括号: 推其入栈 右括号: 栈非空时重复以下步骤--> * 若项不为(,则写至输出; 若项为(,则推出循环 operator(opThis): 若栈为空,推opThis; 否则,重复--> * 弹出一项,若项为(,推其入栈; 若项为operator,且 若opTop=opThis,输出o原创 2016-06-23 23:03:30 · 422 阅读 · 0 评论 -
《java数据结构与算法》笔记-CH4-8栈结构实现后缀表达式计算结果
/** * 中缀表达式转换成后缀表达式: 从输入(中缀表达式)中读取的字符,规则: 操作数: 写至输出 左括号: 推其入栈 右括号: 栈非空时重复以下步骤--> * 若项不为(,则写至输出; 若项为(,则推出循环 operator(opThis): 若栈为空,推opThis; 否则,重复--> * 弹出一项,若项为(,推其入栈; 若项为operator,且 若opTop=opThis,输出o原创 2016-06-23 23:29:42 · 584 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-1单链表
/** * Link节点 * 有数据项和next指向下一个Link引用 */class Link { private int iData;//数据 private double dData;//数据 public Link next;//下一个link节点的引用 public Link(int i, double d) { iData = i; dData = d; }原创 2016-06-24 01:12:07 · 345 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-2单链表,增加根据关键字查找和删除
/** * Link节点 有数据项和next指向下一个Link引用 */class Link { private int iData;// 数据 private double dData;// 数据 public Link next;// 下一个link节点的引用 public int getiData() { return iData; } public Link(in原创 2016-06-24 03:05:41 · 3893 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-3双端链表
/** * 双端链表的实现 */class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = d; } public String toString() { return "[" + dData + "]"; } public void displayLink(原创 2016-06-24 04:20:59 · 2814 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-4用链表实现堆栈
//用链表实现堆栈/** * 节点类 */class LinkS { private long data; public LinkS next; public LinkS(long d) { this.data = d; } public String toString() { return String.valueOf(data); }}/** * 链表类原创 2016-06-26 02:33:17 · 3919 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-5用双端链表实现队列
//用双端链表实现队列/** * 节点类 */class LinkQ { private long data; public LinkQ next; public LinkQ(long d) { this.data = d; } public String toString() { return String.valueOf(this.data); }}/**原创 2016-06-27 01:09:38 · 3896 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-6实现有序链表
//有序链表/** * 节点类 */class Node { public long data; public Node next; public Node(long d) { this.data = d; } public String toString() { return String.valueOf(data); }}/** * 有序链表类 */c原创 2016-06-27 01:10:47 · 3580 阅读 · 0 评论 -
《Java数据结构与算法》笔记-CH5-链表-7实现链表的插入排序
/** * 节点类 */class NodeI { public long data; public NodeI next; public NodeI(long d) { this.data = d; }}/** * 排序链表 */class SortedListI { private NodeI first; public SortedListI() {原创 2016-06-29 01:38:32 · 3837 阅读 · 0 评论 -
笔记:使用对象数组提高效率的问题
《算法第四版》p44Java中对象数组即是一个由对象的引用组成的数组,而非所有对象本身组成的数组。如果对象非常大,那么在移动它们时由于只需操作引用而非对象本身,就会大大提高效率;如果对象很小,每次获取信息时都需要通过引用反而会降低效率。import edu.princeton.cs.algs4.Counter;import edu.princeton.cs.algs4.StdRand原创 2016-11-21 03:48:08 · 2856 阅读 · 0 评论