2-4 DLR动态执行环境 圣殿祭司的ASP.NET4.0专家技术手册 在.NET 4.0平台下有3个重要动态角色:①dynamic动态类型.②IronPython与IronRuby动态语言.③DLR(Dynamic Language Runtime)动态执行环境,前两者之所以能够存在,在于DLR的创建,DLR克服了原本.NET平台无法支持动态语言的限制,在DLR基础架构的支持下,便能衍生出动态类型.动态语言的诸多应用,如图2-2所示. 微软列举DLR的好处有: 简化将动态语言移植到.NET F
3.5.4 解决方案 如果手动计算凸包,你应该可以很轻松地处理好各种极端情况.但是如果需要用计算机语言来描叙每一个步骤,我们可能会觉得比较困难.Graham扫描算法的关键点在于计算和最低点的极角大小.一旦计算并且排序之后,算法只需要遍历所有的点,不断地构建凸包并且根据新发现的信息调整结构即可.代码见例3-1. 例3-1:Graham扫描算法的实现 public class NativeGrahamScan implements IConvexHull { public IPoint[] comp
2.4.7 性能不明显的计算 在很多情况下,仅仅通过算法的描述(如加法和乘法)就可以分辨出算法的性能是线性级还是平方级的.例如,平方级的主要特征是嵌入的循环结构.但是,这样的直接分析对某些算法却无法使用.例2-5给出了GCD算法,该算法是由欧几里德设计,用于计算两个整数的最大公约数. 例2-5:欧几里得GCD 算法 public static void gcd (int a[], int b[], int gcd[]) { if (isZero (a)) { assign (gcd, a); r