算法分析
要饭真得好难
这个作者很懒,什么都没留下…
展开
-
Fibonacci数列的应用和求解
下面我们将要介绍Fibonacci的基本概念、应用、和求解方法1、Fibonacci数列2、Fibonacci数列的另一种定义3、Fibonacci数列的性质4、Fibonacci数列的应用5、Fibonacci数列的求解一、Fibonacci数列 什么是Fibonacci数列,在这里我们采用递归的方式来定义Fibonacci数列:F(1) = 1原创 2012-04-06 17:45:33 · 2173 阅读 · 0 评论 -
矩阵相乘的两种实现方法
第一种最朴素的算法就是用A矩阵的第i行与B矩阵的第j列的各个元素相乘求和,得到C矩阵的第i行第j列的元素。void MatrixMulMatrix_Solution1(int matrix1[][2], int m, int matrix2[][3], int n, int result[][3]){ int i, j, k; if (matrix1 == NULL || matrix2原创 2013-05-07 22:18:39 · 3132 阅读 · 0 评论 -
递归 和 非递归 遍历二叉树
1 二叉树结点2 先序遍历二叉树3 中序遍历二叉树4 后序遍历二叉树5 测试样例1 二叉树结点struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;};2 先序遍历二叉树 先序遍历二叉树递归算法定义为:若二叉树为空原创 2013-08-22 16:29:54 · 1883 阅读 · 0 评论 -
二分查找及其应用
(1) 二分查找:使用二分查找(Binary Search)的前提有:(1)线性表必须是关键码有序(通常是从小到大有序)。(2)其次,线性表必须是顺序存储。所以链表不能采用二分查找。二分查找(Binary Search)基本思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记原创 2013-08-10 14:49:14 · 2546 阅读 · 0 评论 -
快速排序及其应用
快速排序(Quick Sort):快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序的目的。例题:假设现在我们要对数组{50, 10, 90, 30, 70, 40, 80, 60, 20}进行排序。算法实现如下:#include using原创 2013-08-10 15:27:58 · 2042 阅读 · 1 评论 -
求数组中的最大子数组之和,最长递增子序列
(1) 求数组中的子数组之和的最大值(2) 求数组中的最长递增子序列(1) 求数组中的子数组之和的最大值。题目:输入一个整形数组,数组里有整数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。我们定义nSum表示临时子数组之和,nAll表示子数组之和的最大值。当nSum nSum = max原创 2013-08-10 20:06:26 · 1917 阅读 · 0 评论 -
求两个字符串的最长公共子串,最长公共子序列,编辑距离
(1) 找出两个字符串的最长公共子串题目:输入两个字符串,找出两个字符串中最长的公共子串。找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。因此我们采用一个二维矩阵来存储中间结果,下面我们看这个二维数组如何构造?假设两个字符串分别是:”bab”和”caba”。如果str[i] == str[j] 则matrix[i][j] = 1,否则matrix[i][原创 2013-08-10 22:01:35 · 4787 阅读 · 2 评论 -
归并排序及其应用
归并排序(Merge Sort):归并排序(Merge Sort)的基本思想是:“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。因此归并排序就是利用归并的思想来实现的,假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到 (n+1)/2个长度为2或1的有序子序列;再两两归并,….,如此重复,直至得到一个长度为n的有序序列位置,这种排序方原创 2013-08-10 15:52:10 · 1634 阅读 · 0 评论 -
使用两个队列实现一个栈,使用两个栈实现一个队列!
1、这里所说的都是STL中的queue,stack 其中queue的特点是先进先出,它所具有的函数有: queue void push(int elem) //向队列中添加元素 void pop() //原创 2011-11-18 17:21:04 · 9566 阅读 · 3 评论