`

【编程珠玑】第五章 编程小事

 
阅读更多

一,概述

主要讲解如何保证编程的正确性。在程序中加入断言(assert(断言内容) //如果错误,则终止程序。否则正常执行)。

typdef //声明自定义类型

typedef int size; //声明int 型整数的别名

size array[4];


测试结构题大小的程序


二,习题

5)测试、断言优化过程


如何利用二分的性质来进行处理还是一个问题。

一种办法是:


但是这个方法需要多次使用才能检测出来,也就是可能在查找某两个数的时候不会报错,可能在查找别的几个数的时候就报错了。很多时候,这不是一种好选择。

根据第五题的题意,可以写如下代码来减少每次检测的量。



加一个static变量来记录这个数组是否经过检测,来决定以后的检测还需要进行。

当然对于多个数组的检测,可以利用hash来处理,因为一般来说,数组的下标地址都是不一样的。

  1. for(i=0;i<n-1;++i)
  2. assert(a[i]<a[i+1]);

如何利用二分的性质来进行处理还是一个问题。

一种办法是:

  1. intbs(int*a,intb,inte,intv)
  2. {
  3. int*begin=a+b,*end=a+e,*mid;
  4. if(!a||b>=e)return-1;
  5. while(begin<end)
  6. {
  7. mid=begin+((end-begin)>>1);
  8. assert(*begin<=*mid&&*mid<=*end);
  9. if(*mid>v)end=mid;
  10. elseif(*mid<v)begin=mid+1;
  11. elsereturnmid-a;
  12. }
  13. return-1;
  14. }

但是这个方法需要多次使用才能检测出来,也就是可能在查找某两个数的时候不会报错,可能在查找别的几个数的时候就报错了。很多时候,这不是一种好选择。

根据第五题的题意,可以写如下代码来减少每次检测的量。

  1. intbs(int*a,intb,inte,intv)
  2. {
  3. int*begin=a+b,*end=a+e,*mid,i=b;
  4. staticint*record=0;
  5. if(!a||b>=e)return-1;
  6. if(!record||record!=a)
  7. {
  8. while(i<e&&a[i]<a[i+1])++i;
  9. assert(i==e);
  10. }
  11. while(begin<end)
  12. {
  13. mid=begin+((end-begin)>>1);
  14. assert(*begin<=*mid&&*mid<=*end);
  15. if(*mid>v)end=mid;
  16. elseif(*mid<v)begin=mid+1;
  17. elsereturnmid-a;
  18. }
  19. return-1;
  20. }

加一个static变量来记录这个数组是否经过检测,来决定以后的检测还需要进行。

当然对于多个数组的检测,可以利用hash来处理,因为一般来说,数组的下标地址都是不一样的。

9,,serch.c 源程序



分享到:
评论

相关推荐

    编程珠玑 第2版(修订版)_编程珠玑修订_资料_

    《编程珠玑 第2版(修订版)》是一本深受程序员喜爱的经典著作,它不仅提供了丰富的编程实践经验,还深入探讨了程序设计的艺术与智慧。这本书的修订版更是在原版基础上进行了更新和完善,旨在帮助程序员提升编程技能,...

    编程珠玑 编程珠玑 编程珠玑 编程

    《编程珠玑》是一本经典的计算机科学与编程书籍,作者是Jon Bentley。这本书以其独特的视角深入探讨了程序设计的艺术和技巧,旨在提升程序员的问题解决能力,优化算法,并提高代码效率。书中涵盖了一系列实用的编程...

    编程珠玑之第二章questionC 测试数据

    "第二章questionC"提及的问题是关于"求变位词",这是一个常见的字符串处理问题,涉及到字符统计、排序以及字符串比较等基础知识。 变位词,又称为同字母异序词,是指两个或多个单词由完全相同的字母组成,但字母...

    编程珠玑源码下载编程珠玑书后源代码

    《编程珠玑》是计算机科学领域的一本经典之作,由Jon Bentley 编著,它以其深入浅出的方式探讨了程序设计的问题和解决方案,尤其在数据结构、算法优化以及问题解决策略方面有着独到的见解。这本书的源代码是作者为了...

    编程珠玑.pdf

    第5章 劈开戈尔迪之结 43 5.1 小测验 43 5.2 解答 44 5.3 提示 44 5.4 原理 47 5.5 习题 48 5.6 深入阅读 49 5.7 调试(边栏) 49 第6章 计算机科学箴言集 51 6.1 编码 52 6.2 用户界面 53 6.3 调试 53 6.4 性能 54 ...

    编程珠玑(续)

    《编程珠玑(续)》是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,...

    编程珠玑 Programming Pearls 第二版(中文版+源代码)

    《编程珠玑》第二版不仅是初学者的宝贵教材,也是经验丰富的程序员持续学习和提升的宝典。它通过实例展示了如何将理论知识转化为实际的编程技能,使读者在解决问题的过程中不断提升自己的编程智慧。

    编程珠玑 编程珠玑续

    《编程珠玑》和其续篇是两部深受程序员喜爱的经典著作,主要涵盖了程序设计、算法分析和数据结构等核心编程领域。这两本书以其深入浅出的讲解方式和丰富的实例,帮助读者提升编程技巧和解决问题的能力。 在《编程...

    编程珠玑 第二版 修订版 epub

    总的来说,《编程珠玑》第二版修订版是一部深度和广度并重的编程指南,无论你是初学者还是经验丰富的开发者,都能从中获得启发和提升。通过学习这本书,你不仅可以提升编程技能,还能培养出解决问题的敏锐直觉和良好...

    编程珠玑习题集锦

    《编程珠玑》是计算机科学领域的一本经典之作,作者Jon Bentley通过一系列实际问题的探讨,引导读者理解和掌握编程中的高效解题技巧。书中的问题和解决方案涵盖了算法设计、数据结构优化以及问题解决策略等多个方面...

    编程珠玑续本

    编程珠玑续、编程珠玑续本、编程珠玑续本、编程珠玑续本

    《编程珠玑》第2版中文PDF+源代码

    《编程珠玑》是计算机科学领域的一本经典著作,作者是Jon Bentley,他在书中通过一系列有趣的问题和解决方案,深入浅出地探讨了程序设计的艺术和技巧。这本书的第二版中文PDF和源代码的提供,为中国的程序员和计算机...

    编程珠玑第2版(中文pdf版)

    《编程珠玑》第二版是一本经典的计算机科学书籍,作者为Jon Bentley。这本书不仅深入浅出地讲解了许多算法设计和程序优化方面的知识,而且还通过大量的实例来帮助读者理解和掌握这些概念。下面我们就来详细探讨一下...

    编程珠玑(第二版)答案

    根据提供的标题“编程珠玑(第二版)答案”和描述“编程珠玑(第二版)答案”,我们可以推测出这是关于《编程珠玑》这本书的相关解答资料。《编程珠玑》是一本经典的计算机科学书籍,作者为Jon Bentley。本书旨在...

    编程珠玑第二版英文版 带源码

    《编程珠玑第二版英文版》是一本深受程序员喜爱的经典著作,由Jon Bentley 所著。这本书以其深入浅出的方式探讨了程序设计的艺术,通过一系列精心挑选的问题和解决方案,揭示了编程中的智慧与技巧。书中的每个章节都...

    编程珠玑II(编程珠玑·续) 扫描版6.56M pdf格式

    编程珠玑II(编程珠玑·续) 扫描版6.56M pdf格式

    编程珠玑(PDF带目录)

    《编程珠玑》是一本享有盛誉的计算机科学与编程领域的经典著作,它以其深入浅出的讲解方式和丰富的实例,深受程序员和计算机科学爱好者的喜爱。这本书的主要内容围绕算法展开,旨在帮助读者掌握如何有效地解决编程...

    编程珠玑及其源码

    编程珠玑,编程珠玑续以及源码,本书针对程序设计人员探讨了一系列的实际问题,这些问题是对现实中常见问题的归纳总结。作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨...

    编程珠玑(第二版).pdf

    《编程珠玑(第二版)》是一本深受程序员喜爱的经典著作,它由Jon Bentley 所著,详尽探讨了程序设计中的效率问题和算法优化。这本书不仅提供了实用的编程技巧,还深入浅出地讲解了如何通过巧妙的思维来解决复杂的问题...

Global site tag (gtag.js) - Google Analytics