上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 28 下一页

2013年12月28日

算法:权重图的最短路径算法

摘要: 算法思路问题给定顶点集合为 V,边集合为 E,求起始节点 S 到 E 的最短路径 P ?路径的权重 = 路径的边的权重之和。解过程任意时刻的路径都可以划分为到三个集合:X:路径的所有顶点都是最短路径的一部分。Y:路径的末端节点不是最短路径的一部分。Z:其它。从 Y 中选择权重最小的路径,将其末端节点加入到最短路径中,如果末端节点是 E,求解结束。优先级队列该算法需要用到一个工具:优先级队列(从某个集合中选择最小的元素)。 1 class PriorityQueue 2 where T : IComparable 3 { 4 ... 阅读全文

posted @ 2013-12-28 09:29 幸福框架 阅读(6783) 评论(0) 推荐(0) 编辑

2013年12月27日

算法:图(Graph)的遍历、最小生成树和拓扑排序

摘要: 背景不同的数据结构有不同的用途,像:数组、链表、队列、栈多数是用来做为基本的工具使用,二叉树多用来作为已排序元素列表的存储,B 树用在存储中,本文介绍的 Graph 多数是为了解决现实问题(说到底,所有的数据结构都是这个目的),如:网络布局、任务安排等。图的基本概念示例顶点(Vertex)上图的 1、2、3、4、5、6 就是顶点。邻接(Adjoin)如果 A 和 B 通过定向边相连,且方向为 A -> B,则 B 为 A 的邻接,如果相连的边是没有方向的,则 A 和 B 互为邻接。边(Edge)顶点之间的连线就是边。连通图(Connected Graph)不考虑边的方向性,从任何一个节点 阅读全文

posted @ 2013-12-27 10:27 幸福框架 阅读(14582) 评论(2) 推荐(2) 编辑

2013年12月26日

算法:堆(Heap)

摘要: 背景Heap 可以用来实现优先级队列,也可以用来做堆排序,本文简单的做个介绍。Heap规则是一个完全二叉树,隐含的意思是:他是平衡的、使用数组进行存储也是连续的。给定的任意节点,该节点小于等于其父亲节点,大于他们的孩子节点。基础知识对于一个完全二叉树,如果将其存储到数组中,给定父节点的索引为:x,则:left child's index is:2*x + 1。right child's index is:2*x + 2。root's index is:0.说明:上面的公式很容易自己推到出来,有兴趣的朋友可以推到一下,这样就不用记住这个特性了。图示存储到数组的顺序为:先存 阅读全文

posted @ 2013-12-26 10:11 幸福框架 阅读(5859) 评论(0) 推荐(4) 编辑

2013年12月25日

算法:哈希表格(Hash Table)

摘要: 背景Java 和 .Net 平台都有一个所有引用类型都会间接或直接继承的类型:Object,这个类型提供最基本的相等性比较算法和哈希算法,很多书上都给出了在重写这两个算法的时候的主意事项,其中大多数主意事项都和哈希表有关。《CLR VIA C#》的作者觉得将哈希算法放到 Object 不是很适合,我也有这种感觉,每次重写相等性比较算法都要重新哈希算法,非常不爽,我就没打算将其用到哈希表中作为键使用。哈希表定义使用哈希算法将 A 数值空间(键)映射到 B 数值空间(存储),如下:A -> 0B -> 1C->2D->3B 数值空间的查询速度要求非常快,毫无疑问就是数值了。 阅读全文

posted @ 2013-12-25 15:00 幸福框架 阅读(1539) 评论(0) 推荐(0) 编辑

2013年12月24日

算法:非平衡二叉搜索树(UnBalanced Binary Search Tree)

摘要: 背景很多场景下都需要将元素存储到已排序的集合中。用数组来存储,搜索效率非常高: O(log n),但是插入效率比较低:O(n)。用链表来存储,插入效率和搜索效率都比较低:O(n)。如何能提供插入和搜索效率呢?这就是二叉搜索树的由来,本文先介绍非平衡二叉搜索树。非平衡二叉搜索树规则所有节点的左节点小于节点,所有节点的右节点大于等于自身,即:node.value > node.left.value && node.value currentRightSmallestParent = current.Right; 2 var currentRightSmal... 阅读全文

posted @ 2013-12-24 16:02 幸福框架 阅读(1681) 评论(2) 推荐(1) 编辑

2013年12月23日

算法:希尔排序(Shell Sort)

摘要: 背景在三种简单的排序算法中(冒泡、选择和插入)插入排序的算法最好,不过插入过程可能需要进行大量的移动,如何尽可能少的移动元素呢?希尔排序正是基于对这个问题的思考而想出来的,考虑到希尔排序对已排序数组的排序效率尤为好(接近O(n)),因此希尔排序会先按照较大的间隔,对间隔的元素进行插入排序,然后将间隔缩小重复上述过程,直到间隔为 1。实现 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7. 阅读全文

posted @ 2013-12-23 09:57 幸福框架 阅读(582) 评论(0) 推荐(0) 编辑

2013年12月22日

算法:五步教你消除递归

摘要: 背景递归对于分析问题比较有优势,但是基于递归的实现效率就不高了,而且因为函数栈大小的限制,递归的层次也有限制。本文给出一种通用的消除递归的步骤,这样您可以在分析阶段采用递归思想,而实现阶段采用非递归算法。函数的调用过程函数的调用是基于栈,每次调用都涉及如下操作:调用开始时:将返回地址和局部变量入栈。调用结束时:出栈并将返回到入栈时的返回地址。使用堆中分配的栈消除递归递归版本代码 1 public static int Triangle(int n) 2 { 3 // 地址:2 4 if (n == 1) 5 ... 阅读全文

posted @ 2013-12-22 14:05 幸福框架 阅读(9526) 评论(6) 推荐(5) 编辑

2013年12月21日

算法:排列算法

摘要: 背景记得上大学期间试着实现一个排列算法,可惜当时没有写出来,只是硬编码了几层循环,今天用递归终于写出来了。实现代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy 8 { 9 class Program10 {11 static void Main(string[] args)12 ... 阅读全文

posted @ 2013-12-21 20:53 幸福框架 阅读(378) 评论(0) 推荐(0) 编辑

2013年12月20日

算法:逆波兰表达式求值

摘要: 背景运算符求值的一种常见做法是:先将中缀表达式转换为后缀表达式(逆波兰表达式),然后再对后缀表达式求值,之所以这么做的原因是后缀表达式的求值非常简单。代码实现 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy.Stacks 8 { 9 public static class Calculator 10 ... 阅读全文

posted @ 2013-12-20 20:35 幸福框架 阅读(1592) 评论(0) 推荐(0) 编辑

2013年12月19日

算法:中缀表达式转换为逆波兰表达式

摘要: 背景此文给出一个中缀表达式转变为逆波兰表达式(后缀表达式)的算法,算法实现的比较简单,特别是:词法分析部分是没有做的。实现 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy.Stacks 8 { 9 public static class Calculator 10 { 11 pr... 阅读全文

posted @ 2013-12-19 13:29 幸福框架 阅读(1048) 评论(0) 推荐(0) 编辑

2013年12月18日

算法:优先级队列(PriorityQueue)

摘要: 背景此文给出基于已排序数组的实现,多数情况应该基于 Heap 进行实现,因为数组的插入效率为O(n),而 Heap 的插入效率为 Log(n)。PriorityQueue代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy.Queues 8 { 9 public class PriorityQueue ... 阅读全文

posted @ 2013-12-18 17:50 幸福框架 阅读(593) 评论(0) 推荐(0) 编辑

2013年12月17日

Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。

摘要: 1 2 3 4 5 6 7 8 9 注意:确定配置文件的版本号和项目引用的版本号匹配。 阅读全文

posted @ 2013-12-17 16:49 幸福框架 阅读(7682) 评论(0) 推荐(0) 编辑

2013年12月16日

算法:基于 RingBuffer 的 Deque 实现

摘要: 背景前两篇文章介绍了 Queue 的实现,很多类库都引入了 Deque,Deque 可以两头添加和删除,然后在 Deque 之上构建 Queue 和 Stack。Deque代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy.Deques 8 { 9 public class Deque 10 ... 阅读全文

posted @ 2013-12-16 12:08 幸福框架 阅读(683) 评论(0) 推荐(0) 编辑

2013年12月15日

算法:基于 RingBuffer 的 Queue 实现《续》

摘要: 背景上篇实现了一个简单的队列,内部使用了 _count 计数,本文采用另外一种模式,不用 _count 计数。RingBuffer不用 _count 计数的话,为了区分队列的满和空,需要在数组中预留一格,如下图就代表了一个满队列。ArrayQueue代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace DataStuctureStudy.Queues 8 { 9 . 阅读全文

posted @ 2013-12-15 11:29 幸福框架 阅读(1057) 评论(0) 推荐(0) 编辑

2013年12月14日

算法:基于 RingBuffer 的 Queue 实现

摘要: 背景如果基于数组实现队列,常见的选择是采用 RingBuffer,否则就需要移动数组元素。RingBuffer很容易看出 RingBuffer 的思想,这里就不赘述了。您可以思考一个问题:图中表示的场景是一个空队列?还是一个满队列?答案是:单单维护 _header 和 _tail 还不足以判断,必须维护一个 _count 计数。ArrayQueue代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tas 阅读全文

posted @ 2013-12-14 10:49 幸福框架 阅读(2850) 评论(0) 推荐(1) 编辑

2013年12月13日

UML:概要设计,用什么画我的类图?

摘要: 背景做过需求之后,很少使用 UML 画概要设计,这几天尝试的用了几个工具,最总还是选择了 VisualStudio。Edraw详细信息很难编辑,如:签名。Viso添加成员太麻烦了。VisualStudio图形不支持着色。备注使用 VisualStudio 可以直接将概要设计的成果用在详细设计中。 阅读全文

posted @ 2013-12-13 09:16 幸福框架 阅读(4763) 评论(1) 推荐(0) 编辑

2013年12月12日

企业应用:应用层查询接口设计

摘要: 需求显示的列Columns。查询面板的查询参数SearchArguments。动态查询(允许用户自定义各种查询)DynamicFilterGroup。排序Sorters。分页信息Page。ItemsPerPage。示例代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using Happy.Query; 8 using Happy.Query.Filters; 9 10 name. 阅读全文

posted @ 2013-12-12 08:54 幸福框架 阅读(776) 评论(0) 推荐(0) 编辑

2013年12月11日

DDD:一个朋友对领域驱动的小结

摘要: 首先我在一家老板有点关系的小软件公司带领一帮工作一两年的程序员做项目,这里要特别强调的是做项目(差不多是外包,只不过客户群体比较固定),项目就是今天项目A是这个逻辑,明天项目B是那个逻辑,两者之间的业务基本没有什么可复用的地方。 在这种项目上实施ddd,感觉非常痛苦,比传统的开发模式要花费更多的成本。举个简单的例子,对一条信息进行编辑, 用ddd的话,可能要经过3-4次的对相同内容的赋值操作,尤其是在引入领域事件驱动的情况下更是如此。而传统开发模式可能就一次赋值就提交到数据库中,尤其是这些项目的90%的功能都是基本的CRUD。所以我觉得这种没有很大持续性的项目(就是几个月做完验收后,可能再也不 阅读全文

posted @ 2013-12-11 10:08 幸福框架 阅读(1366) 评论(4) 推荐(1) 编辑

2013年12月10日

SQL:表格创建学习笔记

摘要: CREATE TABLE语法CREATE TABLE "table_name"("column 1" "data type for column 1" [column 1 constraint(s)],"column 2" "data type for column 2" [column 2 constraint(s)],... [table constraint(s)] );示例1 CREATE TABLE Users2 (3 Id INT PRIMARY KEY,4 UserType NVA 阅读全文

posted @ 2013-12-10 10:59 幸福框架 阅读(265) 评论(0) 推荐(0) 编辑

2013年12月9日

SQL:查询学习笔记

摘要: SQL 查询命令SELECT语法SELECT "column_name"FROM "table_name";返回一列1 SELECT Username FROM Users返回多列1 SELECT Username, Password From Users返回所有列1 SELECT * FROM UsersDISTINCT语法SELECT DISTINCT "column_name"FROM "table_name";示例1 SELECT DISTINCT Name FROM UsersWHERE语法SELECT 阅读全文

posted @ 2013-12-09 15:49 幸福框架 阅读(880) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 28 下一页

导航

我要啦免费统计