2021-03-09

《数据结构》- -第一章

一·算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列。

二·特性

(1)有穷性:算法必须总是在执行有穷步之后结束。
(2)确定性:算法中每一条指令必须有确切的含义。
(3)可行性:算法一定是能行的
(4)输入输出:算法可以有0个或多个输入 一个或多个输出

一个好的算法应该具有正确性,可读性,健壮性,高效率和低存储量的特征

三·算法时间效率度量
(1)可以忽略加法常量

O(2n + 3) = O(2n)

(2)与最高次项相乘的常数可忽略

O(2n^2) = O(n^2)

(3)最高次项的指数大的,函数随着 n 的增长,结果也会变得增长得更快

O(n^3) > O(n^2)

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

O(2n^2) = O(n^2+3n+1)
O(n^3) > O(n^2)

四·时间复杂度的计算

(1)用常数 1 取代运行时间中的所有加法常数

(2)在修改后的运行次数函数中,只保留最高阶项

(3)如果最高阶项存在且不是 1,则去除与这个项相乘的常数(即 O(2n^2) = O(n^2),得到的结果就是大 O 阶

例:

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

五·分析

对于外循环,其时间复杂度为 O(n);
对于内循环环,当 i=0 时,内循环执行了 n 次,当 i=1 时,执行了 n-1 次,······当 i=n-1 时,执行了 1 次。
因此内循环总的执行次数为:
n + (n-1) + (n-2) + \cdots + 1 = \frac{n(n+1)}{2} = \frac{n^2}{2} + \frac{n}{2}

根据大 O 阶推导方法,最终上述代码的时间复杂度为 :
在这里插入图片描述

六·常见的时间复杂度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值