zoukankan      html  css  js  c++  java
  • 第三章 数据决定程序结构

      本章主要讲解一个合适的数据结构对一个程序的重要性。一个好的数据类型能够节省开发时间也能够节省内存的消耗。

      文末总结一下四点:

      1.使用数组重新编写重复代码。在现在的变成中主要用到的是list、map之类的数据结构来代替数组。

      2.封装复杂结构。抽象bean。

      3.尽可能使用高级工具。超文本、名字-值对、电子表格、数据库、编程语言等都是特定问题领域中的强大的工具。由于本书出版的年份较早,这里提到的基本都是日常开发需要用到的。比较新的工具redis在现在工程中刚接触到。也是基于键-值对的形式存储数据。

      4.从数据得出程序的结构。本章的主题就是:通过使用恰当的数据结构来替代复杂的代码,从数据可以得出程序的结果就。万变不离其宗:在动手编写代码之前,优秀的程序员会彻底理解输入、输出和中间数据结构,并围绕这些结构创建程序。

    习题:

    1.优化以下代码

     1 if (income<=2200)
     2     tax=0;
     3 else if (income<2700)
     4     tax= 0.14*(income-2200);
     5 else if (income <=3200)
     6     tax = 70 + 0.15*(income - 2700);
     7 else if(income <=3200)
     8     tax = 145 + 0.16 * (income - 3200);
     9 else if(income <=4700)
    10     tax = 225 = 0.17 * (income - 3700);
    11     ...
    12 else 
    13     tax = 53090 + 0.70 * (income - 102200);

     作答:虽然给出一个结果,但是依然存在问题。

    1.这里面一共有25个if判断,所以利率的增量在之后是大于0.01的,所以按照这个写法是不正确。可以考虑用数组代替这些增量,并做循环。

    1  int number = (income-2200)%500;
    2  for(int intI=0;intI<=number+1;intI++){
    3      moneyRate=0.14+0.1*intI;
    4      redis=(income-2200)-500*intI;
    5      tax=tax+moneyRate*redis;
    6
    
    
    优化后
    1  list moneyRates= new ArrayList(0.14,0.15,0.16,0.17,0.18,....,0.70);
    2  int number = (income-2200)%500+1;
    3  for(int intI=0;intI<moneyRates.length && intI<=number ; intI++){
    4   redis=(income-2200)-500*intI;
    5   tax=tax+moneyRates[intI]*redis;
    6  }
    
    
    
     
    
    
    
    
    
    
    
    
     
  • 相关阅读:
    汽车金融评分卡
    Lending Club 数据做数据分析&评分卡
    时间序列分析和预测 (转载)
    距离计算公式总结(转载)
    机器学习常用算法与辅助函数公式
    金融领域常用的数据分析方法
    常用模型评估方法总结
    A--集成算法的实现
    A--随机森林(RF)的 sciklit-learn 实现
    A--Scikit-Learn 实现决策树
  • 原文地址:https://www.cnblogs.com/nayt/p/5521892.html
Copyright © 2011-2022 走看看