数据结构与算法分析 java篇 第一天

数据结构与算法分析 第一天
第一章
简单的介绍了.java里面一些基本的知识,还有数学上面基本的数学公式的推到.
可能里面比较难懂的部分应该就是类型擦除问题,边界的订立可能要更加的清楚. 

注意 % 模运算是非常耗性能的. 因为 n%10= n-[n/10]*10

java1.5 为什么要出泛型? 
  1. 类型安全
  2. 消除强制类型转换
  3. 潜在的性能收益
消除代码中的强制类型转换(使用Object 来作泛型),同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。
这就是泛型所做的工作。 减少出现 ClassCastException的可能.


对于泛型的限制:
  1. 基本类型: Object<int>
  2. instanceof检测:类型转换工作只对原始类型进行.
  3. static的语境:在泛型类中 static方法和static域均不可引用类的变量   //不太懂.这个的意思
  4. 泛型类型的实例化      T obj = new T(); 
  5. 泛型数组的对象.    T[] arr = new T[10];
  6. 参数化类型的数组. 下例.




边界的定义
Class MutipleBoundsGenericType<T extends Class & Interface>{},边界与边界之间用"&"分隔(注:类在前,接口在后),当然,根据Java中继承的定义(单继承),所以类只能有一个,但可以有多个接口.


-------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------


第二天

第二章 算法分析

这章的重点就是
教会我怎么去判断一个程序所需要的时间.就是 时间复杂度的问题.

有好几种表示方式.但是通常都不怎么用,都用一个叫 大O标记法(    O(f(n))   ) f(n) 就是一个上界(小于等于 f(n))

然后就要记住几个函数的法则:
  1. T1(N)+T2(N) = O( f(n)+ g(n) ) 或者 O( max{f(n),g(n)} ) //这里其实可以简单的联想到平时顺序的程序 的复杂度计算.都是用最大
  2.  T1(N) * T2(N)= O(f(N) * g(N)) 
  3. 如果T(N)是一个k次多项式,侧T(N)=θ(N^k)
  4. 对任意常数k,   log^kN =O(N) 这样就说明对数增长得非常缓慢.

运行时间的计算 一般法则就是 有多少个for 就是 多少次方 ,同时又多个 就选最大的复杂度作为这个程序的复杂度.
     
     
 
for(int i =0;i< a.length ;i++) //这里是 1+n+n 复杂度为
number += i * i * i; //一共占了4个时间单元(两次乘法,一次加法,一次赋值) 即 4N
 









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值