关于一道习题的思考

K&R书中习题5-7为:

重写函数readlines, 将输入的文本行存储到由main函数提供的一个数组中,而不是存储到调用alloc分配的的存储空间中。该函数的运行速度比改写前快多少?

本人参考the C answer book中给出的解答,改写readlines, 经测试编译后与原程序在处理速度上没有差别。

一个是调用 malloc 动态分配内存,一个是用固定分配的内存,本来期望修改后程序的处理速度会大大提高。分析一下可知:sortline 程序最复杂的部分为文本排序,应占用大部分处理时间。而排序操作用于指向输入行的指针, 与输入行的存储方式无关,因而改写前后差别不大。

时间: 2024-08-05 17:28:57

关于一道习题的思考的相关文章

前5章内容习题及思考(里面有很多该清楚的概念)

前言:习题课真滴是炒鸡有意思,一方面我们可以从中检测自己对知识的掌握程度,另一方面还可以听老师再用很简洁的语言描述题目后面的知识点,最重要的就是自己的总结和回顾啦!不要把所有事情都留到期末,加油! 疑惑: 1.二阶振荡环节的谐振峰值和谐振频率是怎么推来的? 2.开环系统高频段和闭环系统高频段为何有着一定关系? 3.非最小相角系统的相频特性相角变化的绝对值为何一般不小于最小相位系统相角变化的绝对值? 总结: 1.开环传递函数的K是尾一标准型下的K,求稳态误差时的A/K中的K就是开环传递函数下的K,

关于文件索引的一道习题

例:设文件索引结点中有8个地址项,每个地址项大小为4字节,其中5个地址项为直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB.则可表示的单个文件最大长度是多少KB? 解:磁盘索引块为1KB字节,每个地址项大小为4字节,故每个磁盘索引块可存放1024/4=256个物理地址块.又因为文件索引节点中有8个地址项,其中5个地址项为直接地址索引,这意味着逻辑块号为0-4的为直接地址索引:2个地址项是一级间接地址索引,这意味着第一个地址项指出的物理

sql注入习题/ctfs.me sql injection

sql注入习题 来源于ctfs.me的一道习题,实在做不出来,google了wp,发现这道题目是引自于其他习题集了,而且原题目是有源码的...于是趁机把他的题目做了一遍 level1 这道题目其实没有源码也是可以做的,不过需要简单思考一下 $query = "SELECT * FROM secrets WHERE session_id = '" . $_POST['session_id'] . "'"; 这个语句,我们需要让where 后面的为true,所以我们需要

一道模板元编程题源码解答(replace_type)

今天有一同学在群上聊到一个比较好玩的题目(本人看书不多,后面才知是<C++模板元编程>第二章里面的一道习题), 我也抱着试一试的态度去完成它, 这道题也体现了c++模板元编程的基础和精髓: 类型就是数据. 题目如下所述: Write a ternary metafunction replace_type<c,x,y> that takes an arbitrary compound type c as its first parameter, and replaces all oc

分治法(一)

这篇文章将讨论: 1) 分治策略的思想和理论 2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性. 说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴.由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:1,大整数乘法   2,矩阵乘法的分治策略   3,最近点对  4,凸包问题,请见下一篇. 好了,切入正题. --------------------------------------------

&lt;转&gt;shell经典,shell十三问

shell 十三问: 1) 为何叫做 shell ? 2) shell prompt(PS1) 与 Carriage Return(CR) 的关系? 3) 别人 echo.你也 echo ,是问 echo 知多少? 4) " "(双引号) 与 ' '(单引号)差在哪? 5) var=value?export 前后差在哪? 6) exec 跟 source 差在哪? 7) ( ) 与 { } 差在哪? 8) $(( )) 与 $( ) 还有${ } 差在哪? 9) [email prot

二重循环解题思路

本文通过一道习题,讲解做二重循环习题的思路: 题目:使用二重循环打印如下图形: 分析:首先要明确我们需要打印的种类有:字符串"*",字符串"  "(空格).比如第一行,先打印了4个空格"  ",然后打印了一个"*" . 我们分析一下每行的具体打印情况: 第0行:先打印4个空格,然后打印1个"*" 第1行:先打印3个空格,然后打印3个"*" 第2行:先打印2个空格,然后打印5个"

shell十三问(转)

这个我记得是在chinaunix论坛上最早出现的帖子. Shell 十三问 作者:www.chinaunix.net之網中人 1) 为何叫做 shell ? 在介绍 shell 是甚么东西之前,不妨让我们重新检视使用者与计算机系统的关系: 我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动, 硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管, 事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(

二重循环解题思路--颜群

本文通过一道习题,讲解做二重循环习题的思路: 题目:使用二重循环打印如下图形: 分析:首先要明确我们需要打印的种类有:字符串"*",字符串"  "(空格).比如第一行,先打印了4个空格"  ",然后打印了一个"*" . 我们分析一下每行的具体打印情况: 第0行:先打印4个空格,然后打印1个"*" 第1行:先打印3个空格,然后打印3个"*" 第2行:先打印2个空格,然后打印5个"