算法设计
蜜蜂采蜜
乐观、豁达、开朗的小蜜蜂,努力奔跑......
展开
-
常用的五大排序
冒泡排序的基本思想:重复的走过要排序的数列,一次比较两个元素,相邻两个元素进行交换,直到没有在需要交换为止。 (1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 (3)针对所有的元素重复以上的步骤,除了最后一个。 (4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对原创 2017-04-17 20:56:31 · 824 阅读 · 1 评论 -
矩阵连乘 (动态规划)
动态规划法 题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是可以相乘的,判断这n个矩阵通过加括号的方式相乘,使得相乘的次数最少! 以矩阵链ABCD为例 按照矩阵链长度递增计算最优值 矩阵链长度为1时,分别计算出矩阵链A、B、C、D的最优值 矩阵链长度为2时,分别计算出矩阵链AB、BC、CD的最优值 矩阵链长度为3时,分别计算出矩阵链AB原创 2017-03-03 22:01:48 · 1968 阅读 · 0 评论 -
堆排序的链式存储
堆排序的链式存储(升序) ㈠ 完全二叉树的概念:前h-1层为满二叉树,最后一层连续缺失右结点! ㈡ 首先堆是一棵全完二叉树: a:构建一个堆分为两步:⑴创建一棵完全二叉树 ⑵调整为一个堆 (标注:大根堆为升序,小根堆为降序) b:算法描述:①创建一棵完全二叉树 ②while(有双亲){ A:调整为大根堆; B:交换根和叶子结点;原创 2016-10-29 13:34:33 · 2244 阅读 · 0 评论 -
堆排序的顺序存储
堆排序顺序存储(升序) ㈠ 完全二叉树的概念:前h-1层为满二叉树,最后一层连续缺失右结点! ㈡ 首先堆是一棵全完二叉树: a:构建一个堆分为两步: ⑴创建一棵完全二叉树 ⑵调整为一个堆 (标注:大根堆为升序,小根堆为降序) b:算法描述:①创建一棵完全二叉树 ②while(有双亲){ A:调整为大根堆; B:交换根和叶子结点; C:砍掉叶子原创 2016-10-29 13:19:39 · 1690 阅读 · 0 评论 -
数组的连续最大子段和
最大字段和问题描述 给定由 n 个整数(可能为负整数)组成的序列a1,a2,a3...an,求该数列中连续子段和最大! 例如:当(a1,a2,a3,a4,a5)=(-2,11,-4,13,-5,-2)时,最大字段和为 20 (11 + (-4) + 13); 算法一:对所有满足0 这段代码简洁明了,便于理解,但是程序执行的速度很慢,时间复杂度为O(n^3) 算法二:对于算法一原创 2017-04-16 18:27:08 · 816 阅读 · 0 评论 -
二叉树简单应用
在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),接下来我就在这里给大家介绍一下二叉树在算法中的简单使用: 我们要完成总共有(1)二叉树的创建 (2)二叉树的先中后序递归遍历 (3)统计叶子结点的总数 (4)求树的高度 (5)反转二叉树 (6)输出每个叶子结点到根节点的路径 (6)输出根结点到每原创 2017-05-09 12:39:31 · 1318 阅读 · 0 评论 -
马踏棋盘的实现
(一)马踏棋盘经典算法描述: (1)马踏棋盘是经典的程序设计问题之一,主要的解决方案有两种:一种是基于深度优先搜索的方法,另一种是基于贪婪算法的方法。第一种基于深度优先搜索的方法是比较常用的算法,深度优先搜索算法也是数据结构中的经典算法之一,主要是采用递归的思想,一级一级的寻找,遍历出所有的结果,最后找到合适的解。而基于贪婪的算法则是制定贪心准则,一旦设定不能修改,他只关心局部最优解,但不一...原创 2017-06-11 20:04:19 · 13613 阅读 · 10 评论