算法
文章平均质量分 75
pppppppc
My interests are in Parallel Computing and Optimization.
展开
-
插入排序
一、插入排序算法基本思想在未排序的序列中选择一个元素,插入到已经排好序的序列中。二、插入排序的数据结构一个数组分成两部分,前头的是排好序的(刚开始是第一个元素认为是排好序的),后边是未排序的。三、排序过程图解四、算法源代码#includeint array[] = {-34,3,5,34,5,0,9}; //待排序的数组int l原创 2014-12-06 18:55:53 · 376 阅读 · 0 评论 -
堆排序
一、堆排序算法基本思想利用最小堆(最大堆)的数据结构,利用待排序数据,建立最小/大堆每次取走堆顶的元素,然后将堆底的一个最后一个元素,放到堆顶,重整堆成为最小堆,然后再取走堆顶元素,以此类推......直到取完所有元素二、堆排序的数据结构堆的数据结构,不懂的可以看我另外一篇介绍最小堆的博客:三、排序过程图解四、算法源代码#incl原创 2014-12-09 21:23:29 · 326 阅读 · 0 评论 -
最长公共子序列
一、最长公共子序列算法基本思想最长公共子序列是基于动态规划的思想。最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的(摘自百度百科)我们可以分三个方面思考这样个原创 2014-12-08 10:49:33 · 798 阅读 · 0 评论 -
矩阵连乘
一、矩阵连乘算法基本思想矩阵连乘是基于动态规划的问题。面对ABCDEF...这么多矩阵连乘,让你在其中添加括号使得这些矩阵所做的乘法次数最少。面对这么大的一个问题,我们肯定无从下手。那么如果给你两个矩阵,你是不是又会骂,傻X都会呢?是的,既然解决不了这么大的问题,我们可以从两个矩阵开始,也就是原问题的最小子问题。两个矩阵相差,不能讨论所谓的最小乘法次数,因为情况只有一种,但是它记录了两个矩阵直原创 2014-12-07 15:33:46 · 933 阅读 · 0 评论 -
0/1背包问题
一、0/1背包问题算法基本思想0/1背包问题是经典的动态规划问题。问题基本描述为:给你体积为V的背包,在物品G1,G2,G3...(这些物品所对应的体积分别为W1,W2,W3...价值分别为P1,P2,P3...)中选择一些放到背包里,使得在不超过背包体积的情况下,背包内物品的价值总和为最大。一句话:决定一件物品要不要放进背包的条件是这件物品放进去所带来的总体收益是大于还是小于不放原创 2014-12-07 16:22:18 · 602 阅读 · 0 评论 -
循环赛日程表
一、循环赛日程表算法基本思想循环赛日程表是基于分治的思想的。对于一个庞大的问题规模,我们无从下手,那么如果让你安排两个人的循环赛,你是不是可以很轻松的解决呢?那不废话吗,1选手和2选手干一场就是了!那么,如果是4个人呢,我们是否可以分成两组,1、2和3、4,分别给1、2安排比赛,3、4安排比赛。等他们内部战争解决了之后,再来挑衅外面的~。那么问题来了,挑衅外人,哪家强?问题貌似很复杂啊,但是你原创 2014-12-07 09:58:17 · 697 阅读 · 0 评论 -
归并排序
一、归并排序算法基本思想归并排序是基于分治的思想,把整个数组Array的排序问题,分成两个子数组Array1和Array2的先各自排序,然后合并成一个新数组的问题。以此递归下去,直到子数组的大小为1的时候,结束递归调用。二、归并排序的数据结构利用数组,以递归树的形式来解决。三、排序过程图解四、算法源代码1.二路归并排序/*原创 2014-12-06 19:49:19 · 392 阅读 · 0 评论 -
冒泡排序
一、插入排序算法基本思想冒泡排序是选择排序的一种。每一趟遍历数组,确定一个最大(如果升序排序)元素通过冒泡的形式把它至于数组的未排好序的末尾处。二、插入排序的数据结构一个数组分成两部分,前头的是未好序的,后边是排好序的。三、排序过程图解四、算法源代码1.普通冒泡排序#includeint array[] = {-3原创 2014-12-06 19:32:29 · 425 阅读 · 0 评论 -
棋盘覆盖
一、棋盘覆盖算法基本思想棋盘覆盖也是基于分治思想,把一个棋盘分成左上,右上,左下,右下四个部分,然后依次解决四个子棋盘的覆盖问题。对于四个子棋盘,如果有奇异方格,那么递归解决棋盘覆盖问题。如果没有奇异方格,那么进行如下操作:1.如果这个子棋盘是左上部分的,先将子棋盘的右下角的方格变为奇异方格,然后递归解决覆盖问题。2.如果这个子棋盘是右上部分的,先将子棋盘的左下角的方格变为奇异原创 2014-12-06 22:46:03 · 1551 阅读 · 0 评论 -
快速排序
一、快速排序算法基本思想快速排序是基于分治思想的一种,在待排序列中选择一个数,在剩下的数中,大于这个数的放在它的右边,小于它的放在它的左边。然后,再递归的对左右两边的数据进行以相同的方式操作。二、快速排序的数据结构数组,以选择的数为基准,大于它的放在右边,小于它的放在左边。三、排序过程图解四、算法源代码#includeint ar原创 2014-12-06 21:25:55 · 405 阅读 · 0 评论 -
部分背包问题
一、部分背包问题算法基本思想部分背包问题是基于贪心法的基本思想。何谓贪心法,只要你够贪心,就能领略贪心算法之精髓。部分背包问题和0/1背包问题的区别就是:部分背包问题中的单个物品,可以取一部分装入背包。而0/1背包问题则是要么全部拿走,要么一无所有(这里引用了LOL卡牌大师的台词)。 那么作为一个so greed的你,肯定应该知道按照什么顺序拿物品的把。没错,看着值钱的先抢! 这里原创 2014-12-08 13:22:52 · 6900 阅读 · 0 评论