![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【编程珠玑】
文章平均质量分 87
小田
无人扶我青云志,我自踏雪向山巅。倘若命中无此运,孤身亦可登昆仑。他朝若有翻身时,生吃黄莲也叫甜。
展开
-
【编程珠玑】第十五章 字符串
一,概述 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]原创 2012-05-27 22:30:32 · 3527 阅读 · 6 评论 -
【编程珠玑(续)】第二章 关联数组
一,关联数组 关联数组和数组类似,由以名称作为键的字段和方法组成。 它包含标量数据,可用索引值来单独选择这些数据,和数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量。这些标量称为Keys,可以在以后用于检索数组中的数值。 关联数组的元素没有特定的顺序,你可以把它们想象为一组卡片。每张卡片上半部分是索引而下半部分是数值。 Java原创 2012-06-06 14:51:48 · 2375 阅读 · 0 评论 -
【编程珠玑(续)】第一章 性能监视工具
一,计算素数第一个程序:如果整数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)原创 2012-06-06 10:49:56 · 2828 阅读 · 4 评论 -
【编程珠玑】第十一章 排序 (插入排序和快速排序的深度优化)
一,概述 1)插入排序 要找到合适的位置,需要判断前一个元素比t小而后一个元素比t大。然后将t插入正确位置。 比较a[j-1] 跟 a[j] 的关系很关键 isort1: 没有到达最终位置,就交换该元素和它前面的元素#include for(int i=1;i<5;i++)原创 2012-05-18 11:07:52 · 2949 阅读 · 4 评论 -
【编程珠玑】第三章 数据决定程序结构
一,内容 通过使用恰当的数据结构来替代复杂的代码。二,习题1、题目描述:本书出版之时,美国的个人收入所得税分为5种不同的税率,其中最大的税率大约为40%.以前的情况则更为复杂,税率也更高。下面所示的程序文本采用25个if语句的合理方法来计算1978年的美国联邦所得税。税率序列为0.14, 0.15, 0.16, 0.17, 0.18.....。序列中此后的计算大于原创 2012-05-12 23:42:38 · 3422 阅读 · 6 评论 -
【编程珠玑】第十二章 取样问题
一,概述 问题描述:如何生成0~n-1内的m个随机整数(不重复) 需求:按序输出,并且保证每个子集被选中的可能性相等。 1)给出下面代码#include "stdio.h"#include "stdlib.h"#include "time.h"void getRandNumber(int m,int n)//在0原创 2012-05-19 17:42:27 · 4013 阅读 · 3 评论 -
【时间测量】代码运行时间的测量方法【linux/window】
一,返回单位为毫秒 #include DWORD dwStart = GetTickCount(); // 测试代码 DWORD dwTime = GetTickCount() - dwStart; 注意:GetTickCount()精确度有限,跟CPU有关,一般精确度在16ms左右,最精确也不会精确过10ms,这原创 2012-05-07 23:23:52 · 4341 阅读 · 0 评论 -
【编程珠玑】第一章 开篇
一,题目: 如何在1MB的空间里面对一千万个整数进行排序?并且每个数都小于1千万。实际上这个需要1.25MB的内存空间(这里所说的空间是考虑用位图表示法时,每一位代表一个数,则1千万/(1024*1024*8) 约为1.25MB )。 1MB总共有838,8608个可用位。所以估计也可以在1MB左右的空间里面进行排序了。二,分析: 1)基于磁原创 2012-05-10 23:26:55 · 6694 阅读 · 13 评论 -
【编程珠玑】第十三章 搜索
一,概述 第十二章,介绍生成某个范围内随机数,并按顺序输出。 本章主要介绍,存储按序输出的容器或者说存放集合的方法。并实现按序插入,按序输出。 1)set容器 1>set容器小例子:#include #include using namespace std;int main(){原创 2012-05-22 14:11:41 · 2497 阅读 · 4 评论 -
【编程珠玑】第十四章 堆(排序,优先级队列)
一,堆 1)堆:任何结点的值都小于或等于其孩子的值的完全二叉树为小根堆 任何结点的值都大于或等于其孩子的值的完全二叉树为大根堆 为了方便使用完全二叉树的性质,数组从下标1开始。 这样:leftChild = 2*i ; rightChild = 2*原创 2012-05-23 17:15:30 · 3003 阅读 · 2 评论 -
【编程珠玑】第八章 算法设计技术
一,概述 问题:求一维数组中连续子向量的最大和。 例如: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}原创 2012-05-15 10:49:08 · 2709 阅读 · 10 评论 -
【编程珠玑】第十章 节省空间
一,概述 1)节省空间带来的好处 程序变小使得加载更快;更容易读入高速缓存;需要操作的数据减少从而减少操作时间。 2)节省空间的方法 数学函数式替代要存储的数据。简单例子为:a[i]=i 。如果你要读取数组第i个元素只需要通过函数f(i) = i得到元素值,而不需要将所有数据存储在数组中。原创 2012-05-17 16:55:29 · 2928 阅读 · 0 评论 -
【编程珠玑】代码优化的27条经典法则
1. 空间换时间法则 1.1修改数据结构 例如:计算球面距离:输入为球面上5000个点组成的集合S,再输入20000个点组成的序列,每个点实用经度和纬度表示,对于20000个点的序列,程序必须求出S中哪个点最接近它,距离使用球体中心与两个点的连线之间的夹角来度量。 直接计算需要用到大量的三角函数,开销很大,而两个点的距离随其欧氏距离单调增加(原创 2012-05-27 22:36:49 · 3382 阅读 · 3 评论 -
【编程珠玑】第四章 编写正确的程序
1、对下标限定界限:加条件 02、这个函数可以写成如下形式:#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; //中间原创 2012-05-14 09:25:58 · 2226 阅读 · 1 评论 -
【编程珠玑】第五章 编程小事
一,概述 主要讲解如何保证编程的正确性。在程序中加入断言(assert(断言内容) //如果错误,则终止程序。否则正常执行)。 typdef //声明自定义类型 typedef int size; //声明int 型整数的别名 size array[4]; typ原创 2012-05-14 14:46:26 · 2828 阅读 · 0 评论 -
【编程珠玑】第七章 粗略估算
一,概述 1)72法则 :单位时间增长率 * 时间 =72 则该时间完成初始值翻番 题目:假设最初投资金额为100元,复息年利率9%,实现资金翻番需要多久? 利用“72法则”,将72除以9(增长率),得8,即需约8年时间,投资金额滚存至200元(翻番),而准确需时为8.0432年。 题原创 2012-05-14 18:56:04 · 3142 阅读 · 0 评论 -
【编程珠玑】第六章 程序性能分析
一,概述 如果要提高软件的性能,需要从下面几个方面入手: 1、算法与数据结构 2、算法调优 3、数据结构重组 4、与系统无关的代码的调优(float取代double)。 5、与系统相关的调优,把经常使用的函数进行加速,比如关键代码使用汇编代替高级语言 6、硬件上使用浮点加速器原创 2012-05-14 16:01:00 · 2706 阅读 · 0 评论 -
【编程珠玑】内联函数和宏
一,内联函数的用法 内联函数从源码层层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。 inline Tablefunction(int I) //是没有效果的,编译器只是把函数作为普通的函数申明,我们必须定义原创 2012-05-15 17:39:17 · 2792 阅读 · 5 评论 -
【编程珠玑】第九章 代码调优
一,概述 1)代码调优的目的是什么? 减少CPU运行时间;减少分页或增加高速缓存命中率;减少程序所需空间 2)代码调优为什么不能“滥用”? 1>效率的角色:不成熟的优化是大量编程灾害的根源,可能危及程序正确性、功能及可维护性。 2>度量工具:利用性能检测工具,找到“热点”代原创 2012-05-15 23:23:32 · 2580 阅读 · 2 评论 -
【编程珠玑】第二章 二分查找的巧妙应用
一,三个问题A题:给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。 1、在文件中至少存在这样一个数? 2、如果有足够的内存,如何处理? 3、如果内存不足,仅可以用文件来进行处理,如何处理?答案: 1、32位整数,包括-2146473648~~2146473原创 2012-05-12 00:27:49 · 5002 阅读 · 21 评论 -
【编程珠玑】鸟瞰 --- 编程珠玑 (2012.8.7)
序:刘翔今天再一次倒在起跑线上,我作为翔子的Fans,盯着屏幕看刘翔起跑,当他第一个栏摔倒时,我的心碎了,情绪异常低落,久久难以平复。然后给老爸发短信抱怨:刘翔退赛了,为什么又是因伤退赛?我难受。老爸轻描淡写:没办法,这就是竞技体育,有起有落才是人生。 希望刘翔身体无大碍,早日康复。翔子:咱是纯爷们,这届不行,咱再来一届。**************************原创 2012-08-15 00:33:27 · 4935 阅读 · 8 评论