
数据结构与算法
文章平均质量分 62
lxs_only
我只是深夜里一只奋斗的小小码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
迷茫之后的抉择-java数据结构与算法再学习(1)
昨天感觉整个程序员人生很不好,喝了一瓶江小白,醒了程序人生还要继续,回归学习一下数据结构与算法。 也不知道会不会有人看到这篇博客,如果你现在也和我之前一样感到茫然。快来和我一起学习吧。 数据结构包括数组,链表,栈,二叉树,哈希表等等,算法对这些数据结构进行各种处理,比如说:查找一条特殊的数据或者是对数据进行排序等等。 数据结构的特性简述 ...原创 2018-04-16 20:14:26 · 450 阅读 · 0 评论 -
有序数组的归并算法(1)
package javal.util.test;/** * 小学生版归并算法 * @author lh */public class ArrayMerge { /** * @param arrayA * @param arrayB * @return */ public static long[] merge(long[] arrayA, long[] array...原创 2018-04-23 00:02:11 · 368 阅读 · 0 评论 -
队列初识?“初识”!
认识队列之前,总结一下栈的时间复杂度,其实也没啥好总结的,数据项入栈和出栈的时间复杂度都为O(1),当然也没必要比较栈里面的数据项 。 队列,就是学生去食堂打饭的时候排的队,排到前面的最先打到饭,排在后面的最后打到饭。package javal.util.test;public class QueueClass { private int maxSize;//队...原创 2018-04-18 21:33:20 · 180 阅读 · 0 评论 -
双端队列
双端队列就是一个两端都是结尾的队列,队列的每一端都可以插入数据项和移除数据项。package javal.util.test;public class DequeClass extends QueueClass{ private int lefthead; private int leftfoot; public DequeClass(int size) { s...原创 2018-04-18 22:37:40 · 413 阅读 · 0 评论 -
优先级队列初始-数组实现
优先级队列就是学生去食堂排队打饭,同普通队列一样,队头的先打饭,队尾的后打饭,但是这次有人比较厉害,他要插队,你不听他就打你。哎。package javal.util.test;public class PriorityQueue { private int maxSize; private long[] array; private int nItems; pu...原创 2018-04-18 23:23:35 · 991 阅读 · 0 评论 -
链表初识?嗯 -----单链表
在认识链表之前要熟悉一个新东西-----链结点 链结点 由两部分组成 数据(data) 和 下一个 链结点 引用(next); 在java中大概是这个样子的:public class Link { protected long data; //数据 protected Link next; //下一个链结点 public Li...原创 2018-04-19 00:37:22 · 171 阅读 · 0 评论 -
双端链表
package javal.util.test;/** * 双端链表 * @author lh */public class FirstLastLink { private Link first;//第一个节点的引用 private Link last; //最后一个节点的引用 public FirstLastLink() { first = null; last ...原创 2018-04-19 22:23:09 · 206 阅读 · 0 评论 -
有序链表
package javal.util.test;/** * 有序链表 * @author lh */public class SortLinkList { private Link first; public SortLinkList() { first =null; } public boolean isEmpty() { return first==null;...原创 2018-04-19 23:21:08 · 239 阅读 · 0 评论 -
汉诺塔问题---有点迷糊
如下图所示,在A 上有多个直径不同的圆盘,并且盘子中央都有一个懂以试它们刚好可以放到塔座上,所有的盘子起初在A上,这个问题的目标是将所有的盘子都从A移动到C上,每次只可以移动一个圆盘,并且任何一个盘子都不可以放在比自己小的盘子上。 package javal.util.test;public class Towers { static int nDisks = 3; p...原创 2018-04-23 21:23:53 · 129 阅读 · 0 评论 -
递归问题(三角数列 和 二分查找)
package javal.util.test;import java.io.BufferedReader;import java.io.InputStreamReader;/** * 数字序列 1,3,6,10,15,21 * @author lh * */public class SanjiaoNumber { /** * @email 15688506227@...原创 2018-04-22 23:31:23 · 140 阅读 · 0 评论 -
java实现的二分查找
package javal.util.test;public class TowFind { public static void main(String[] args) { System.out.println(find(new long[] {1,2,3,4,5,6,7,8},8)); } public static int find (long[] array,long...原创 2018-04-16 20:49:54 · 181 阅读 · 0 评论 -
如何表示算法的效率?初识大O表示
我们在比较算法的时候经常说 算法1 比 算法2 快 2倍 之类的话,但实际上类似这种说法不具有说服力。 因为当数据的个数发生变化时,对应的比例可能也会发生改变,有可能 当数据为10个时,算法1比算法2快2倍,但是当数据为100时,算法1有可能比算法2快3倍。因此需要一个用来描述算法的效率与数据个数 之间关系的东西----大O表示 Order of 大约是.... 探...原创 2018-04-16 22:08:35 · 812 阅读 · 0 评论 -
数组能够完成工作中的一切?
在平常的工作中,如果没有去深入的思考下数据存储的方式,我们会觉得数组似乎可以完成所有的工作需求。对于这个问题首先要从数组的优缺点出发。 如果是一个无序数组,我们可以进行很快的插入(O(1))操作,但是查找比较慢(O(N)); 对于一个有序数组,我们可以使用二分查找查找(O(logN))的很快,但是插入却是慢的(O(N)); 而无论是有序还是...原创 2018-04-16 22:27:47 · 175 阅读 · 0 评论 -
冒泡排序初识
package javal.util.test;public class BubblingSort { public static void main(String[] args) { long[] array =new long[] {2,4,2,6,73,64,22,34,11,6}; bubbleSort(array); for (int i = 0; i < arr...原创 2018-04-16 23:33:57 · 110 阅读 · 0 评论 -
选择排序初识,改进?
选择排序改进了冒泡排序,将其交换次数从O(N 2) 减少到了O(N),但是比较的次数仍然为O(N2),即使这样,选择排序依然为大数据量的排序提出了一个非常重要的改进,减少了大量数据在内存中的交换次数。 talk is cheap ,show my code! package javal.util.test;public class Sele...原创 2018-04-17 00:14:27 · 249 阅读 · 0 评论 -
插入排序初识 有啥区别?
对于冒泡和选择我一看就明白是怎么回事了,但是这个插入排序让我蒙圈了几分钟,再仔细一看,恍然大悟,抓住“局部有序”找到突破口。这就很灵性了,我先不管后面的数据项到底是什么样的,但是我可以在这组数据中标记一个位置,我可以确保,在我的标记位置之前的数据是有序的。talk is cheap show my code! package javal.util.test;pub...原创 2018-04-17 21:42:53 · 128 阅读 · 0 评论 -
This is a easy Stack by java
package javal.util.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * this is a easy stack used by array * @author lh * */public class Stac...原创 2018-04-17 22:41:01 · 193 阅读 · 0 评论 -
Stack 简单应用 检查符号是否匹配
package javal.util.test;public class StackCheck { private String input; private CharStack stack; private boolean isgood = true; public StackCheck(String input) { this.input = input; ...原创 2018-04-17 23:49:35 · 359 阅读 · 0 评论 -
双向链表---not only 双端链表
之前认识的链表,比如单链表,双端链表,和有序链表,访问过程都是由表头到表尾,如果有需求要从表尾向表头遍历。那就蛋疼了。而双向链表解决了这个问题。 双向链表的链结点与之前的稍有不同,在java中大概是这样的: package javal.util.test;/** * 双向链表中的链结点 * @author lh */public class Double...原创 2018-04-19 23:49:00 · 120 阅读 · 0 评论