第二章《大话数据结构》读后笔记

第二章 算法《大话数据结构》读后笔记

第一章《大话数据结构》读后笔记


算法定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的特性

  • 输入输出:算法至少有一个或多个输出
  • 有穷性:指算法在执行有限的步骤之后,自动结束,不会无限循环。
  • 确定性:算法在一定条线下只有一条执行路径,相同的输入智能有唯一的输出结果。
  • 可行性:算法的每一步都必须是可行的,也就是说每一步都通过执行有限次数完成。

算法设计的要求

  • 正确性
  • 可读性
  • 健壮性:输入不合法数据也能做相应处理
  • 时间效率高盒存储量低

算法时间复杂度

判断一个算法的效率时,函数中的常数盒其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数

  • 大O表示法

     O(1)常数阶、O(n)线性阶、O(n^2) 平方阶
    

    1.用常数1取代运营时间中的所有加法常数
    2.在修改后的运营次数函数中,只保留最高阶项。
    3.如果最高阶项存在且不是1,则去除与这个项相乘的常数。

    • 常数阶:执行时间恒定的算法O(1)
    • 线性阶:O(n)

      下面代码需要执行n次 即时间复杂度O(n)

      		int i
      		for(i = 0; i < n; i++){
      		/*时间复杂度为O(1)的程序*/
      		}
      
    • 对数阶:O(logn)

      下面代码需要执行n次 即时间复杂度O(logn) 2^x=n得到x=log2n

      int count =1;
      while (count < n)
      {
      	count = count * 2;
      	/*时间复杂度为O(1)的程序*/
      }
      
      
    • 平方阶

      下面代码循环嵌套复杂度为n*n即n^2

       int i,j;
       for(i = 0; i < n; i++){
       	for(j = 0; j < n; j++){
       		/*时间复杂度为O(1)的程序步骤*/
       	}
       }
      

      下面这种嵌套循环实际执行没有 这样表示为还是为O{n^2}。
      n + ( n − 1 ) + ( n − 2 ) + . . . + 1 = n ( n + 1 ) 2 = n 2 2 + n 2 n+(n-1)+(n-2)+... +1= \cfrac{n(n+1)}{2} = \cfrac{n^2}{2}+\cfrac{n}{2} n+(n1)+(n2)+...+1=2n(n+1)=2n2+2n

      	
      int i,j;
      for(i = 0; i < n; i++){
      	for(j = i; j < n; j++){
      		/*时间复杂度为O(1)的程序步骤*/
      	}
      }
      

常见的时间复杂度

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值