![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程珠玑
文章平均质量分 80
0不等于1
这个作者很懒,什么都没留下…
展开
-
程序性能分析
程序性能分析设计层面1.问题定义:良好的问题定义可以避免用户对问题需求的过高估计,良好的错误恢复能力会使编译器运行的稍慢一些,但是通常会由于减少了总的编译次数而缩短总的时间。2.系统结构:将大型系统分解成模块也许是决定其性能的最重要的单个因数。在构建出整个系统的构架以后,设计者需要完成简单的粗略估算,以确保程序的性能在正确的范围之内。3.算法和数据结构:4.代码调优5.翻译 2015-10-03 14:40:24 · 370 阅读 · 0 评论 -
搜索
搜索问题:生成[0, maxval]范围内m个随机整数的有序序列1.有序数组时间:O(m^2) 空间:mclass IntSetArray { private: int n; int *x; public: IntSetArray(int maxelements, int maxval) { x = new int[1 + maxelements翻译 2015-10-05 15:58:21 · 255 阅读 · 0 评论 -
问题:给定一个英语词典,找出其中的所有变位词集合。
问题:给定一个英语词典,找出其中的所有变位词集合。例如,”pots”,”stop”和”tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母顺序来得到。 标记词典中的每一个词,使得在相同变位词类中的单词具有相同标识符。然后将具有相同标识的单词集中在一起。对于的一个问题,我们使用基于排序的标识:将单词中的字母按照字母表顺序排列。第二个问题,我们将所有的单词按照其标识的顺序排序。翻译 2015-10-02 14:25:33 · 2099 阅读 · 0 评论 -
算法设计技术
算法设计技术问题:问题的输入是具有n个浮点数的向量x,输出是输入向量的任何连续子向量中的最大和。例如,如果输入向量包含下面10个元素:31,-41,59,26,-53,58,97,-93,-23,84代码:float arr[] = { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 };// 立方算法 时间复杂度为T(n) = O(翻译 2015-10-03 22:27:56 · 295 阅读 · 0 评论 -
排序
排序1.简单排序在数组规模较小时常使用,代码简单Sort1For(int i = 0; i {For(int j = i; j > 0&&x[j-1] > x[j]; j--){Swap(x[j-1], x[j]);}}改进1:内联展开swap函数改进2:保存x[i]Sort2For(int i = 0; i {t = x[i];翻译 2015-10-04 17:43:46 · 242 阅读 · 0 评论 -
二分法
二分法1.二分法程序2.测试3.断言4.自动测试5.计时Assert:指导程序代码的开发,也可以用来判断程序的正确性。使用assert断言表示相信某个逻辑表达式为真,语句assert(n>=0)在n为0或更大时什么都不做,但在n为负时会报告某种错误。程序:int n;int x[4096] = {0};// return position if t in翻译 2015-10-03 13:38:26 · 266 阅读 · 0 评论 -
粗略估算
粗略估算1.72法则定义:假设以年利率r%投资一笔钱y年,金融版本的“72法则”指出,如果r*y=72,那么你的投资差不多会翻倍。该近似相当精确:以年利率6%投资1000美元12年,可得到2012美元;以年利率8%投资1000美元9年,可得到1999美元。72法则用于估算指数过程的增长非常便利。如果一个盘子里的菌群以没小时3%的速率增长,那么其数量每天会翻倍。 2.Little翻译 2015-10-03 15:31:21 · 1267 阅读 · 0 评论 -
节省空间
节省空间简单性可以衍生出功能性、健壮性以及速度和空间。问题:一个地理数据库中存储邻居的系统,一共有两千个邻居,编号范围为0-1999,每个邻居在地图中用一个点来描述。程序将选定的物理位置转换为0-199范围内的一对整数x和y,然后使用(x,y)对指定出用户选中了2000个点中那一个点(如果有的话),因为在同一个位置(x,y)不可能存在两个点,所以程序员仅需要考虑用200*200的点标识翻译 2015-10-04 16:14:11 · 322 阅读 · 0 评论 -
问题:将一个n元一维向量向左旋转i个位置,例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。
问题:将一个n元一维向量向左旋转i个位置,例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。 解决办法:1.求模置换 移动x[0]到临时变量i,然后移动x[i]至x[0],x[2i]至[i],依次类推,将x中的所有下标对n取模,直至返回到取x[0]中的元素,此时改为从t取值然后终止过程。//求公约数unsigned int Gcd(unsigned翻译 2015-10-01 21:14:59 · 468 阅读 · 0 评论 -
堆
堆问题:程序的输入包含两个整数m和n,其中m。输出是0~n-1范围内m个随机整数的有序列表堆是用来表示元素集合的一种数据结构。“/”向下取整Shitup(n)函数:将n加入堆底,并排序Shitdown(n)函数:将n加入堆顶,并排序优先级队列:Insert函数在集合中插入一个新元素Extractmin:删除集合中最小的元素优先级队列排序:template翻译 2015-10-05 18:09:23 · 273 阅读 · 0 评论 -
取样
取样问题:程序的输入包括两个整数m和n,其中m;输出是0-n-1范围内m个随机整数的有序列表,不允许重复。算法1:int bigRand() { return RAND_MAX * rand() + rand(); }int randint(int l , int u) { return l + bigRand() % (u - l + 1)翻译 2015-10-04 21:51:29 · 356 阅读 · 0 评论 -
字符串
字符串问题:为文档中包含的单词生成一个列表使用模板sets和stringsint main(int argc, char **argv){ set str; set::iterator iter; string t; while(cin >> t) { str.insert(t); } fo翻译 2015-10-05 23:49:02 · 275 阅读 · 0 评论