数据结构与算法
文章平均质量分 71
sugar-foxs
这个作者很懒,什么都没留下…
展开
-
红黑树
原文地址: https://m.aliyun.com/yunqi/articles/65041转载 2017-07-26 14:55:39 · 142 阅读 · 0 评论 -
约瑟夫环
具体问题我就不描述了,就是著名的约瑟夫问题。解决方法:1,普通解法,时间复杂度O(n*m):使用循环链表,返回唯一剩下的节点。private Node josephusKill(Node head,int m){ if(head == null || head.next == head ||m1){ return head; } Node原创 2017-09-11 22:01:57 · 611 阅读 · 0 评论 -
字符串数组中所有字符串组成一个字典序最小的字符串
如果a+b的字典序小于b+a,就把a放在前面,否则把b放在前面。证明略。/** * 所有字符串组成一个字典序最小的字符串 * @param arr * @return 字典序最小的字符串 */ public String lowestStrign(String[] arr){ if(arr == null || arr.l原创 2017-09-12 09:01:33 · 1465 阅读 · 0 评论 -
最长公共子序列
给定两个字符串str1和str2,返回两个字符串的最长公共子序列。时间复杂度O(m*n),空间复杂度O(m*n).如果只想求最长公共子序列长度,可以使用空间压缩的方法将额外空间复杂度降到O(min{m,n}).private static String lcse(String str1,String str2){ if(str1 == null || str1.le原创 2017-09-11 22:36:57 · 492 阅读 · 0 评论 -
最长公共子串
给定两个字符串,返回两个字符串的最长公共子串:两个字符串长度分别为M,N;时间复杂度O(M*N),空间复杂度为O(1)private static String lcst(String s1,String s2){ if(s1 == null || s1.length()==0 ||s2 == null || s2.length() == 0){ return原创 2017-09-11 22:09:53 · 256 阅读 · 0 评论 -
排序之选择排序
package sort;/** * Created by gch on 2017-08-15. */public class SelectSort { public static void main(String[] args) { int[] arr = {2,4,3,1,6,5,9,8}; selectSort(arr); }原创 2017-08-15 20:21:50 · 143 阅读 · 0 评论 -
排序之冒泡排序
package sort;/** * Created by gch on 2017-08-15. */public class BubbleSort { public static void main(String[] args) { int[] arr = {1,4,3,2,5,6,9,8}; bubbleSort(arr); }原创 2017-08-15 20:20:21 · 171 阅读 · 0 评论 -
排序之堆排序
package sort;import java.util.Arrays;/** * Created by gch on 2017-08-15. */public class HeapSort { public static void adjustHeap(int[] a, int i, int len) { int temp, j; temp原创 2017-08-15 20:24:09 · 249 阅读 · 1 评论 -
排序之快排
package sort;import java.util.Arrays;/** * Created by gch on 2017-08-15. */public class QuickSort { public static void main(String[] args) { int[] arr = {9,8,7,6,5,4,3,2,1};原创 2017-08-15 20:24:47 · 251 阅读 · 0 评论 -
排序之希尔排序
package sort;/** * Created by gch on 2017-08-15. */public class ShellSort { public static void main(String[] args) { int[] arr = {9,8,7,6,5,4,3,1,2}; shellSort(arr); }原创 2017-08-15 20:23:18 · 155 阅读 · 0 评论 -
排序之插入排序
package sort;/** * Created by gch on 2017-08-15. */public class InsertSort { public static void main(String[] args) { int[] arr = {9,8,7,6,5,4,3,2,1}; insertSort(arr); }原创 2017-08-15 20:22:22 · 158 阅读 · 0 评论 -
B+树
B+树的定义: 1.其定义基本与B-树同(假装你已经知道B树的定义) 2.非叶子结点的子树指针与关键字个数相同; 3.非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间); 4.为所有叶子结点增加一个链指针; 5.所有关键字都在叶子结点出现;B+树是由B树和索引顺序原创 2017-08-21 18:16:12 · 246 阅读 · 0 评论 -
AVL树,伸展树,B-树,B+树,B*树
AVL树是带有平衡条件的二叉查找树,我们知道二叉查找树的定义是对于树中任意的节点X,它的左子树的所有项的值都小于X的值,它的右子树的所有项的值都大于X的值。带有平衡条件的二叉查找树,是为了解决一个问题,什么问题呢? 问题是:当向一棵树输入预先排序好的数据时,二叉查找树所有节点都没有左儿子,这是对这棵树的操作的代价就会很大。 AVL树的平衡条件是:每个节点的左子树和右子树的高度最多差原创 2016-12-05 21:04:12 · 428 阅读 · 0 评论 -
排序之归并排序
package sort;import java.util.Arrays;/** * Created by gch on 2017-08-15. */public class MergeSort { public static void main(String[] args) { int[] arr = {9,8,7,6,5,4,3,2,1};原创 2017-08-15 20:25:25 · 158 阅读 · 0 评论