数据结构与算法
SheepMu
这个作者很懒,什么都没留下…
展开
-
单链表---java实现
单链表优点:1.不需要预先给出元素个数。 2.单链表插入删除时不需要移动数据元素。单链表缺点:1.每个节点有指针,空间利用率低。 2.单链表不支持随机读取数据。Node.javapackage com.sheepmu;public class Node { Object v原创 2013-12-29 22:41:37 · 4921 阅读 · 3 评论 -
实现O(1)获取最大最小值的栈----java
实现O(1)获取最大最小值的栈和队列----java一.如何实现包含获取最小值函数的栈问题:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的getMin函数。在该栈中,调用getMin、push及pop的时间复杂度都是O(1).最小值思路:用一个辅助栈stack2记住每次入栈stack1的当前最小值:在stack1入栈时,往stack2中加入当前最小值;st原创 2014-08-09 22:37:44 · 10508 阅读 · 0 评论 -
伸展树
伸展树原创 2014-08-29 01:27:38 · 747 阅读 · 0 评论 -
红黑树一
红黑树一原创 2014-08-29 01:25:52 · 807 阅读 · 0 评论 -
红黑树2
红黑树2原创 2014-08-29 01:26:35 · 755 阅读 · 0 评论 -
B树系列
B树系列原创 2014-08-29 01:28:22 · 803 阅读 · 0 评论 -
堆
堆原创 2014-08-29 01:31:30 · 731 阅读 · 0 评论 -
图1
图1原创 2014-08-29 01:30:10 · 738 阅读 · 0 评论 -
图2
图2原创 2014-08-29 01:33:34 · 730 阅读 · 0 评论 -
图3
图3原创 2014-08-29 01:31:32 · 751 阅读 · 0 评论 -
图4
图4原创 2014-08-29 01:34:46 · 760 阅读 · 0 评论 -
两个栈实现队列+两个队列实现栈----java
两个栈实现队列+两个队列实现栈----java一.两个栈实现一个队列思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好再栈顶,出栈;若要给队列添加元素,即先进sack1,要出队时,若stack2不为空就出栈,为空时就把stack1全部进栈到stack2二.两个队列实现一个栈ps:图原创 2014-08-08 00:52:45 · 17821 阅读 · 1 评论 -
AVL树----java
AVL树----javaAVL树是高度平衡的二叉查找树1.单旋转LL旋转理解记忆:1.在不平衡的节点的左孩子的左孩子插入导致的不平衡,所以叫LLprivate AVLTreeNode leftLeftRotation(AVLTreeNode k2) { AVLTreeNode k1; k1 = k2.left; k2.left = k1.right原创 2014-08-20 01:05:12 · 2091 阅读 · 0 评论 -
约瑟夫环
第1题:由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续 从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序。package com.sheepmu.text;import java.util.Arrays; /* 由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的原创 2014-03-23 21:31:50 · 1202 阅读 · 0 评论 -
栈-----括号匹配+表达式计算
第1题:用栈实现表达式括号是否合法 。假设有圆括号和方括号,其嵌套顺序随意,及([]())或[([][])]等均为正确的格式,[(])或([())或(()]均为不正确的格式。package com.sheepmu.text;import java.util.Stack; /* ([]())或[([][])]等均为正确的格式,[(])或([())或(()]均为不正确的格式。 *原创 2014-03-19 23:14:28 · 3007 阅读 · 0 评论 -
顺序表----java实现
最简单的数据结构——顺序表,此处以数组为例。顺序表的优点:支持随机读取,内存空间利用率高。顺序表的缺点:1.需要预先给出最大数据元素个数,这往往很难实现。 2.插入和删除时需要移动大量数据。SeqList.javapackage com.sheepmu;public class SeqList { private int maxSize; private int siz原创 2013-12-29 17:40:25 · 3763 阅读 · 0 评论 -
直接插入排序---java实现
思路:遍历无序的原数组,把第i个的后一个即i+1去与前面的i个逐个比较...解法一:package com.sheepmu.text;import java.util.Arrays; /* * @author sheepmu */ public class Sort { public static void main(String[] args){ int原创 2014-03-25 21:29:20 · 685 阅读 · 0 评论 -
冒泡排序----java实现
冒泡排序思路:第1次:顺序比较从第0个到第len个(相邻两个)元素并把大的放后面,第一次进行完后,最大 的元素会在最后; 第2次:顺序比较从第0个到第len-1个(相邻两个),因为最大的已经定位置了,不需要参与比原创 2014-03-26 21:10:08 · 1251 阅读 · 0 评论 -
希尔排序----java实现
思路:希尔排序是分组基础上的直接插入排序,给定的一个步长数组,每个小组先直接插入排序。虽然有四次循环,但是每次循环次数少。package com.sheepmu.text;import java.util.Arrays;import java.util.Comparator; /* * @author sheepmu */ public class Sort {原创 2014-03-26 14:20:52 · 670 阅读 · 0 评论 -
直接选择排序----java实现
直接选择排序思路: 从待排序数据中选择第一个假定为最小的下标,然后他后面的与他循环比较,得到真的最小值下标,然后最小值前的那一区段依次后移,并把最小值赋值给第一个元素。第二次时,假定第二个为最小,然后他后面的与他循环比较(这样就不会比较到已最小的第一个)。。。。。package com.sheepmu.text;import java.util.Arrays;import java.ut原创 2014-03-26 16:18:22 · 859 阅读 · 0 评论 -
快速排序:升序+降序----java实现
快速排序思路:先把第一个元素令为low下标,最后一个为high下标。并把第一个元素令为temp来作为标准元素。以标准元素来调整数组,使比标准元素小的都在标准元素前,比标准元素大的都在标准元素后。这样一次排序后,有两个好处:1.标准元素找到了它自己在该元素中的位置;2.把数组分成了以标准元素为分隔的两个子数组。然后分别对两个子数组采用相同的排序方法。那么明显就递归咯~~~package com.原创 2014-04-03 23:23:22 · 6878 阅读 · 0 评论 -
KMP算法----java实现
字符串匹配时,一般用原创 2014-05-12 22:34:05 · 1324 阅读 · 0 评论 -
二叉树的递归遍历和非递归遍历(附详细例子)
二叉树的递归遍历和非递归遍历(附详细例子) 二叉树的遍历主要有递归实现和非递归实现,递归实现比较好理解,非递归实现主要是利用了栈的思想,后进先出,本文实现二叉树的非递归遍历主要是用了LinkedList可以当做栈使用的功能。具体例子如下:package com.sheepmu; import java.util.LinkedList; public class Bin原创 2014-06-06 22:28:42 · 9930 阅读 · 0 评论 -
面试准备系列01----面试中的链表题目汇总
面试准备系列01----面试中的链表题目汇总 九月份马上就要校招了,感觉时间很是捉急啊~~~~白天要实习,就只能晚上熬夜来准备基础知识和写博客了。此篇博文是面试准备系列的第一篇,随后会持续更新02,03......以下是常见的关于链表的面试题目,题目几乎都来自LeetCode 或者 剑桥offer,也借鉴了不少网上的答案,感谢感谢~~1.链表长度2.得到链表倒数第k个节点的原创 2014-07-30 22:44:45 · 1129 阅读 · 0 评论 -
二叉查找树BST----java实现
二叉查找树BST----java实现1.二叉查找树简介二叉查找树又名二叉搜索树和二叉排序树。性质如下: 在二叉查找树中:(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(03) 任意节点的左、右子树也分别为二叉查找树。(04) 没有键值相等的节点(no dupl原创 2014-08-07 01:02:45 · 11555 阅读 · 0 评论