专栏:《编程珠玑》
本文关键词:编程珠玑,由笔耕文化传播整理发布。
[架构设计] 【编程珠玑】鸟瞰 --- 编程珠玑 (2012.8.7)
序:刘翔今天再一次倒在起跑线上,我作为翔子的Fans,盯着屏幕看刘翔起跑,当他第一个栏摔倒时,我的心碎了,情绪异常低落,久久难以平复。然后给老爸发短信抱怨:刘翔退赛了,为什么又是因伤退赛?我难受。老爸轻描淡写:没办法,这就是竞技体育,有起有落才是人生。 希望刘翔身体无大碍,早日康复。翔子:咱是纯爷们,这届不行,咱再来一届。 **************************...
[架构设计] 【编程珠玑(续)】第二章 关联数组
一,关联数组 关联数组和数组类似,由以名称作为键的字段和方法组成。 它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。 关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。 Java...
[架构设计] 【编程珠玑(续)】第一章 性能监视工具
一,计算素数 第一个程序:如果整数n,从2开始到n-1都不能整除则为素数。注意,n=2时一定是素数的判断 #include using namespace std; int prime(int n) { int i; for (i = 2; i < n; i++) if(n%i == 0)...
[架构设计] 【编程珠玑】第十五章 字符串
一,概述 1)统计每个字符串出现的个数的程序实现,利用Map容器: #include #include using namespace std; int main() { map M; map ::iterator j; string t[5]={"abc","dd","abc","dd","dd"}; for(int i=0;i<5;++i) M[t[i]...
[架构设计] 【编程珠玑】第十四章 堆(排序,优先级队列)
一,堆 1)堆:任何结点的值都小于或等于其孩子的值的完全二叉树为小根堆 任何结点的值都大于或等于其孩子的值的完全二叉树为大根堆 为了方便使用完全二叉树的性质,数组从下标1开始。 这样:leftChild = 2*i ; rightChild = 2*...
[编程语言] 【编程珠玑】第十三章 搜索
一,概述 第十二章,介绍生成某个范围内随机数,并按顺序输出。 本章主要介绍,存储按序输出的容器或者说存放集合的方法。并实现按序插入,按序输出。 1)set容器 1>set容器小例子: #include #include using namespace std; int main() {...
[架构设计] 【编程珠玑】第十二章 取样问题
一,概述 问题描述:如何生成0~n-1内的m个随机整数(不重复) 需求:按序输出,并且保证每个子集被选中的可能性相等。 1)给出下面代码 #include "stdio.h" #include "stdlib.h" #include "time.h" void getRandNumber(int m,int n)//在0...
[架构设计] 【编程珠玑】第十一章 排序 (插入排序和快速排序的深度优化)
一,概述 1)插入排序 要找到合适的位置,需要判断前一个元素比t小而后一个元素比t大。然后将t插入正确位置。 比较a[j-1] 跟 a[j] 的关系很关键 isort1: 没有到达最终位置,就交换该元素和它前面的元素 #include for(int i=1;i<5;i++)...
[架构设计] 【编程珠玑】第十章 节省空间
一,概述 1)节省空间带来的好处 程序变小使得加载更快;更容易读入高速缓存;需要操作的数据减少从而减少操作时间。 2)节省空间的方法 数学函数式替代要存储的数据。简单例子为:a[i]=i 。如果你要读取数组第i个元素只需要通过函数f(i) = i得到元素值,而不需要将所有数据存储在数组中。...
[架构设计] 【编程珠玑】内联函数和宏
一,内联函数的用法 内联函数从源码层层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。 inline Tablefunction(int I) //是没有效果的,编译器只是把函数作为普通的函数申明,我们必须定义...
[架构设计] 【编程珠玑】第九章 代码调优
一,概述 1)代码调优的目的是什么? 减少CPU运行时间;减少分页或增加高速缓存命中率;减少程序所需空间 2)代码调优为什么不能“滥用”? 1>效率的角色:不成熟的优化是大量编程灾害的根源,可能危及程序正确性、功能及可维护性。 2>度量工具:利用性能检测工具,找到“热点”代...
[架构设计] 【编程珠玑】代码优化的27条经典法则
1. 空间换时间法则 1.1修改数据结构 例如:计算球面距离:输入为球面上5000个点组成的集合S,再输入20000个点组成的序列,每个点实用经度和纬度表示,对于20000个点的序列,程序必须求出S中哪个点最接近它,距离使用球体中心与两个点的连线之间的夹角来度量。 直接计算需要用到大量的三角函数,开销很大,而两个点的距离随其欧氏距离单调增加(...
[架构设计] 【编程珠玑】第八章 算法设计技术
一,概述 问题:求一维数组中连续子向量的最大和。 例如:a[6]={3,4,-2,-9,10,8}; 则最大连续子向量的和 为 10+8 = 18 1)解法一:简单算法 #include #define max(a, b) ((a)>(b)?(a):(b)) int main() { int a[6]={3,4,-2,-9,10,8}...
[架构设计] 【编程珠玑】第七章 粗略估算
一,概述 1)72法则 :单位时间增长率 * 时间 =72 则该时间完成初始值翻番 题目:假设最初投资金额为100元,复息年利率9%,实现资金翻番需要多久? 利用“72法则”,将72除以9(增长率),得8,即需约8年时间,投资金额滚存至200元(翻番),而准确需时为8.0432年。 题...
编程
[架构设计] 【编程珠玑】第六章 程序性能分析
一,概述 如果要提高软件的性能,需要从下面几个方面入手: 1、算法与数据结构 2、算法调优 3、数据结构重组 4、与系统无关的代码的调优(float取代double)。 5、与系统相关的调优,把经常使用的函数进行加速,比如关键代码使用汇编代替高级语言 6、硬件上使用浮点加速器...
[架构设计] 【编程珠玑】第五章 编程小事
一,概述 主要讲解如何保证编程的正确性。在程序中加入断言(assert(断言内容) //如果错误,则终止程序。否则正常执行)。 typdef //声明自定义类型 typedef int size; //声明int 型整数的别名 size array[4]; typ...
[架构设计] 【编程珠玑】第四章 编写正确的程序
1、对下标限定界限:加条件 0 2、这个函数可以写成如下形式: #include using namespace std; int bs(int *a, int begin, int end, int v) { int *b = a + begin; //开始 int *e = a + end; //结束 int *mid = NULL; //中间...
[架构设计] 【编程珠玑】第三章 数据决定程序结构
一,内容 通过使用恰当的数据结构来替代复杂的代码。 二,习题 1、题目描述:本书出版之时,,美国的个人收入所得税分为5种不同的税率,其中最大的税率大约为40%.以前的情况则更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方法来计算1978年的美国联邦所得税。税率序列为0.14, 0.15, 0.16, 0.17, 0.18.....。序列中此后的计算大于...
[架构设计] 【编程珠玑】第二章 二分查找的巧妙应用
一,三个问题 A题:给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。 1、在文件中至少存在这样一个数? 2、如果有足够的内存,如何处理? 3、如果内存不足,仅可以用文件来进行处理,如何处理? 答案: 1、32位整数,包括-2146473648~~2146473...
[架构设计] 【编程珠玑】第一章 开篇
一,题目: 如何在1MB的空间里面对一千万个整数进行排序?并且每个数都小于1千万。实际上这个需要1.25MB的内存空间(这里所说的空间是考虑用位图表示法时,每一位代表一个数,则1千万/(1024*1024*8) 约为1.25MB )。 1MB总共有838,8608个可用位。所以估计也可以在1MB左右的空间里面进行排序了。 二,分析: 1)基于磁...
本文关键词:编程珠玑,由笔耕文化传播整理发布。
本文编号:45796
本文链接:https://www.wllwen.com/wenshubaike/mishujinen/45796.html