随笔分类 -  算法学习

摘要:通用结构体:View Code typedef struct{int r[MAXSIZE+1]; //下标从1开始用,0为哨兵或其他用int length; }SqList;一.选择排序1.1简单选择排序:(1)思路:通过n-i次关键字比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换.(2)代码:View Code void SelectSort(Sqlist *L){ int i, j, min; for(i=1; i<L->length; i++) { for(j=i+1; j<L->length; j++) { ... 阅读全文
posted @ 2012-04-03 00:25 Quains 阅读(744) 评论(0) 推荐(1) 编辑
摘要:分析及结果见代码 /* [题目:]寻找"水王".已知一堆无序的ID,其中水王的ID出现的次数超过一半,要求找出水王的ID. [思路:] 方法一[用到排序]:先将ID排序,然后取其中i/2+1的数即为水王的ID. 缺点:排序使得时间复杂度增高. 方法二[不用排序]:每次删除两个不同的ID(不管是否是水王的ID),那么 剩下的ID列表中水王的ID出现的次数依然会超过一半,看到这个问题 就可以不断重复这个过程,最后剩下的就是水王的ID. */ ... 阅读全文
posted @ 2011-11-14 21:50 Quains 阅读(417) 评论(0) 推荐(0) 编辑
摘要:一、概念 动态规划策略,一种分治策略。和贪婪策略一样,通常是用来解决最优解问题。分治故名就是将问题分解为几个子问题来解决,动态规划的特点就是分解的子问题中(子问题又可以分解成子问题)每次选择选择最优解。 动态规划主要的特点是在做决定前她知道所有子问题的信息。 动态规划的两个重要要素是:1)最优子结构。2)重叠子问题。 1)最优子结构,这是采取动态规划策略解最优化问题后要做的第一步。所谓最优化子结构是说若问题的一个最优解中包含了子问题的最优解,则该问题具有最优子结构。这个是我们采取动态规划的一个充分条件(当然这个条件也满足贪婪策略),问题出现这个条件就可以考虑采取动态规划。 一般要考虑的因素是: 阅读全文
posted @ 2011-11-09 00:16 Quains 阅读(7513) 评论(2) 推荐(2) 编辑
摘要:分析:1)直接想法是穷举法,依次算出电梯停靠在第一层到第N层乘客所要爬的总层数,找出最小值。代码(js版):View Code 1 var nPerson = new Array(0, 2, 3, 5, 8); //nPerson[i]表示第i层下的人数; 2 3 var N = 10; //电梯能到达的最大层数; 4 5 var nMinFloor, nTargetFloor; //nMinFloor为最小总层数;nTargetFloor为电梯停在哪层最优; 6 7 8 ... 阅读全文
posted @ 2011-11-03 13:20 Quains 阅读(764) 评论(2) 推荐(1) 编辑

无觅相关文章插件,快速提升流量