Algorithm
文章平均质量分 84
Alex123980
分享经验,传递快乐
展开
-
五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题转载 2016-07-06 16:15:20 · 1072 阅读 · 0 评论 -
贪心算法总结及实例简介
基本思想:1. 求解最优化问题的算法包含一系列步骤。2. 每一步都有一组选择。3. 作出当前看来最好的选择。4. 希望通过作出局部优化选择达到全局优化选择。5. 贪心算法不一定总产生优化解。6. 贪心算法是否产生优化解需严格证明。贪心算法产生优化解的条件:1.贪心选择性:若一个优化问题的全局优化解可以通过局部优化选择得到。2. 优化子结构贪心问题的解决步骤:原创 2016-06-25 09:53:37 · 734 阅读 · 0 评论 -
动态规划算法总结及实例简介
动态规划特点:1. 把原始问题划分为一系列子问题。2. 求解每个子问题仅一次,并将其结果保存在一个表中,以后用到时直接存取,不重复计算,节省时间。3. 自底向上的计算。适用范围:一类优化问题:可分为多个相关子问题,子问题的解被重复适用。适用动态规划的条件:1. 优化子结构a. 当一个问题的最优解包含了子问题的优化解时,我们说这个问题具有优化子结构。b. 缩小子问原创 2016-06-24 19:48:32 · 558 阅读 · 0 评论 -
排序算法总结
1、简单排序针对某无序数组计算其逆序对个数,再计算简单排序的交换次数,两数值相等,这不是偶然,那么为什么呢?因为简单排序即冒泡和插入排序,其原理都是交换两个相邻的元素,而这正好消去一个逆序对。如果序列基本有序,则冒泡和插入排序简单且高效。任意N个不同元素组成的序列平均具有N(N-1)/4个逆序对。任何仅以交换相邻两元素来排序的算法,其平均时间复杂度为O(n^n),所以要提高算法效率:每原创 2016-06-19 16:05:09 · 345 阅读 · 0 评论 -
01背包、完全背包、多重背包问题分析
背包问题可以用递归方法和动态规划方法,递归代码简洁,方便理解,不过由于重复计算,效率较低,DP方法将前面的计算结果保存到二维数组中,效率较高,值得推荐。1. 01背包(ZeroOnePack): 有n件物品和一个容量为m的背包。(每种物品均只有一件)第i件物品的费用是weight[i],价值是value[i]。求解将哪些物品装入背包可使价值总和最大。解题思路:对于每个物品只考虑两种情况(放原创 2016-08-29 10:02:11 · 906 阅读 · 0 评论 -
一道位运算的算法题
原文链接:点击打开链接最近遇到这样一道算法题:Given an array of integers, every element appears three times except for one. Find that single one.一组整数,除了一个只出现一次以外,其他每个整数都恰好出现三次,要寻找那个特殊的整数。似曾相识首先,它让我转载 2016-09-03 10:01:05 · 451 阅读 · 0 评论