![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 76
Scandinavians
明天会更好!
展开
-
求二叉树中节点的最大距离
《编程之美》 3.8 求二叉树节点中的zuida原创 2014-08-09 23:58:14 · 427 阅读 · 0 评论 -
判断大端或小端
大端与小端(MSB/LSB)原创 2014-06-21 20:26:39 · 364 阅读 · 0 评论 -
约瑟夫环问题一解
问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus)原创 2014-06-21 02:26:24 · 441 阅读 · 0 评论 -
2-3-4树
前有2-3树,2-3-4树的概念不原创 2014-07-09 02:34:15 · 745 阅读 · 0 评论 -
红黑树的基本概念
红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和原创 2014-07-09 23:27:21 · 543 阅读 · 0 评论 -
2-3-4树与红黑树的对应关系
2-3-4树和红黑树之间原创 2014-07-09 19:19:58 · 3843 阅读 · 0 评论 -
平衡二叉树AVL的基本操作之删除
接文章《平衡二叉树的基本操作之插入》,这里给出删除原创 2014-07-07 22:13:12 · 896 阅读 · 0 评论 -
二叉查找树的基本操作之查找插入删除
二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树Binary Sort Tree)或者是一棵空树,或者是具有下列性质的二叉树: (1)、若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)、若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值; (3)、它的左、右子树也分别为二叉查找树。原创 2014-07-06 20:32:29 · 439 阅读 · 0 评论 -
平衡二叉树AVL的基本操作之插入
平衡二叉树或是一棵空树,或是具有下列性质的二叉排序树:其左子树和右子树都是平衡二叉树,而且左右子树深度之差绝对值不超过1. 由此引出了平衡因子(balance factor)的概念,bf定义为该结点的左子树的深度减去右子树的深度(有些书是右子树深度减去左子树深度,我是按照左子树减去右子树来计算的,下面的代码也是这样定义的),所以平衡二叉树的结点的平衡因子只可能是 -1,0,1 ,某个结点的平衡因子原创 2014-07-07 20:42:57 · 907 阅读 · 0 评论 -
2-3树的基本操作实现
通过引入结点度大于2的chazh原创 2014-07-08 18:50:52 · 1148 阅读 · 0 评论 -
KMP模式匹配算法
模式失配函数(failure function):原创 2014-05-14 20:39:07 · 431 阅读 · 0 评论 -
打印二叉树根结点到所有叶子结点的路径
打印路径的思路:利用yig原创 2014-07-06 13:00:33 · 1970 阅读 · 0 评论 -
单源多目标最短路径之Dijkstra算法
Dijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路原创 2014-06-29 16:17:30 · 2626 阅读 · 0 评论 -
单链表中的环
问题1:链表中是否存环?问题2:链表中环的原创 2014-06-22 21:59:09 · 344 阅读 · 0 评论 -
计数排序
计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。原创 2014-05-13 03:27:01 · 339 阅读 · 0 评论 -
基数排序
算法描述前面所讨论的简单排序、快速排序和堆排序等等排序算法di原创 2014-05-12 23:25:30 · 428 阅读 · 0 评论 -
归并排序的迭代算法
在归并算法的迭代算法中,可以把输入看成是n个已排列序列,qizho原创 2014-05-12 02:45:34 · 1263 阅读 · 0 评论 -
伸展树
伸展树,是一种二叉排序树。它可以baozheng原创 2014-07-13 20:53:29 · 725 阅读 · 0 评论 -
牛顿迭代法求开方值
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之原创 2014-08-03 19:59:53 · 1043 阅读 · 0 评论 -
数组分割
《编程之美》 2.18 数组分割原创 2014-08-08 19:06:27 · 541 阅读 · 0 评论 -
计算字符串的相似度
《编程之美》 3.3 计算字符串的相似度原创 2014-08-09 04:29:37 · 548 阅读 · 0 评论 -
点是否在三角形内
《编程之美》 4.4 点是否在sanjiaoxingnei原创 2014-08-09 03:05:00 · 646 阅读 · 0 评论 -
子数组之和的最大值(二维)
解法一:遍历,穷举。代码一:原创 2014-08-06 21:44:01 · 413 阅读 · 0 评论 -
子数组的最大乘积
《编程之美》 2.13问题:geidi原创 2014-08-06 15:25:01 · 411 阅读 · 0 评论 -
N!的末尾有几个零以及二进制表示最右边1的位置
很经典的一道数学题:求n!后面有多少个0。 N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z. 由上面的分析可以看出,只要计算处Z的值,就原创 2014-06-26 00:51:52 · 990 阅读 · 0 评论 -
求数组的子数组之和的最大值
问题:对于一个无序数组,数组中的每个元素可正可负,对于每一个子数组原创 2014-06-25 17:58:27 · 538 阅读 · 0 评论 -
单链表的翻转&倒数第K个结点&中间结点&对齐打印
单链表的翻转,见代码:void reverse(pNode *pList){ pNode pre,curr,nxt; pre = curr = nxt = NULL; for (curr = *pList; curr;nxt = curr->next,curr->next = pre,pre = curr,curr = nxt); *pList = pre;}需要san原创 2014-06-23 20:23:36 · 396 阅读 · 0 评论 -
斐波那契(Fibonacci)数列的求法
斐波那契数列是这样的一组数列:0,1原创 2014-06-26 02:56:57 · 1100 阅读 · 0 评论 -
两个字符串的最长公共子序列(可以不连续)
问题:给定两个字符串,输出其最长公共子序列及其长度。解法:此问题为动态规划的经典问题。解题有固定套路利用二维数组C,和标志位数组FLAG(表示回溯方向):步骤一:构建二维数组,求得最长公共子序列的长度。步骤二:利用数组C构建数组FLAG。步骤三:利用初始字符串和FLAG回溯输出最长公共子序列。数组C的构建方式:回溯输出最长公共子序列过程:上图中的箭头即为原创 2014-07-01 18:25:52 · 1289 阅读 · 0 评论 -
求数组中最长递增子序列
《编程之美》 2.16问题:写一个时间复杂度尽可能di原创 2014-08-07 18:49:47 · 461 阅读 · 0 评论 -
1的数目
《编程之美 》2.4问题:给定一个十进制正整数N,写下从1kais原创 2014-08-04 16:05:06 · 423 阅读 · 0 评论 -
利用快速排序中的切分函数寻找数组主元素
如果一个数组A[1..n]中超过半数的元素都相同时,该数组被称为含有主元素。原创 2014-06-24 17:47:49 · 600 阅读 · 0 评论 -
两个字符串的最长公共子串(子串为连续的)
问题:求两个字符串的最长的公共子串,子串是连续原创 2014-07-01 01:56:51 · 1086 阅读 · 0 评论 -
Treap树结构
Treap,是有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构。 Treap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap纪录一个额外原创 2014-07-15 00:42:26 · 474 阅读 · 0 评论 -
最大公约数问题
解法1:辗转相除法。代码1:原创 2014-08-04 22:05:42 · 357 阅读 · 0 评论 -
简单排序(冒泡|选择|插入)
冒泡排序原理:原创 2014-05-12 01:12:15 · 485 阅读 · 0 评论 -
判断二叉树是否平衡以及二叉树的路径和
问题一:查找二叉树是否有满足和值原创 2014-07-06 15:10:36 · 404 阅读 · 0 评论 -
求二叉树的高度以及二叉树的树形显示
二叉树的高度用递归的方式求解,二叉树的树形显示利用其对应wanqu原创 2014-07-03 20:56:50 · 1110 阅读 · 0 评论 -
二叉树的后序遍历(非递归算法)
可以巧妙的用两个栈来实现后序遍历的非递归算法。注意到后序遍历可以看作是下面遍历的逆过程:即先遍历某个结点,然后遍历其右孩子,然后遍历其左孩子。这个过程逆过来就是后序遍历。算法步骤如下:Push根结点到第一个栈s中。从第一个栈s中Pop出一个结点,并将其Push到第二个栈output中。然后Push结点的左孩子和右孩子到第一个栈s中。重复过程2和3直到栈s为空。完成后原创 2014-06-27 21:19:53 · 1859 阅读 · 0 评论 -
二叉树的创建与前序中序后序遍历的递归实现
一切都在代码里:原创 2014-06-27 00:21:22 · 342 阅读 · 0 评论