Algorithm
文章平均质量分 78
tangbo1987
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序的主要步骤包括: 1、对要排序的数组建堆,此时堆顶(也就是数组第一个元素)要么最大,要么最小; 2、交换数组第一个和最后一个元素; 3、数组长度减1; 4、保持最大堆或最小堆的特性; 5、重复2、3、4,直至数组长度为1,结束。 代码如下: #incl原创 2011-09-10 16:55:26 · 356 阅读 · 0 评论 -
关于常见排序算法的稳定性分析和结论
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为转载 2011-09-17 15:53:46 · 305 阅读 · 0 评论 -
单链表反转
问题很简单,程序如下: #include #include using namespace std; struct LinkNode { int data; LinkNode *next; }; // 反转函数,head指针指向链表头结原创 2011-09-21 17:36:13 · 629 阅读 · 0 评论 -
二叉树相关操作(遍历、路径、最近公共父节点、重构)
本文总结了二叉树的相关操作,并在最后附上所有操作的实现。还有不足之处,以后会及时更新~ 相关操作包括: 1、插入:InsertBTree 2、遍历 1)前序遍历(递归):PreOrderTraverse 2)前序遍历(非递归):PreOrderTraverse原创 2011-09-23 14:14:33 · 1706 阅读 · 0 评论 -
最大公共连续子串(LCS问题)
这里介绍的是求最大公共连续子串的算法,至于非连续的子串问题,可以采用动态规划的方法,具体可参考: http://blog.csdn.net/v_july_v/article/details/6695482 这里就不在详述。 求最大公共连续子串的思路如下: 用矩阵记原创 2011-10-05 10:16:57 · 1524 阅读 · 0 评论 -
求二叉树中两个节点的最大距离
二叉树节点的结构体定义如下: struct BTreeNode { ElemType elem; // 当前节点元素 BTreeNode *left; // 左孩子结点 BTreeNode *right; // 右孩子节点 int maxLeft; //原创 2011-10-08 19:29:24 · 796 阅读 · 0 评论 -
快速排序
快速排序思路如下: 任选数组中一个元素作为关键字,,一趟partition下来的结果保证该关键字大于其左侧的元素,小于其右侧的元素;然后对其左侧和右侧的元素做partition操作;这么递归下去即可排序。 代码如下: #include using namespace std; // 对A[low]...A[high]进行分区 int partition(int原创 2011-09-10 18:27:37 · 367 阅读 · 0 评论