【数据结构】——概论

目录

前言

概论

算法

数据结构

重点

前言


        博主在大一学过数据结构(C语言版),现在大四都忘的差不多了,但是当年老师苦口婆心的提醒该课程重要的场景还历历在目。不得不说当年还是太年轻,没有能力去吃透这本内功心法,现在有了一些底子再一次接触就有一种陌生的熟悉感。不管怎样上天再给了我一次机会,让我能够有机会去学习,话不多说,一起来领略数据结构的魅力吧!

概论

算法+数据结构=程序

算法:对数据运算的描述。

数据结构:逻辑结构和存储结构。

程序设计的实质:针对实际问题选择一种好的数据结构和设计一个好的算法。

算法

 

数据结构

 

 

概念性的一些东西,还有一些基本的术语,就不做详述了,主要说一下该部分的重点。

重点

时间复杂度

概述:算法中基本操作重复执行的次数。

记作:T(n) = O(f(n))

举例说明:

//例题1:
for(i = 1, i <= n, i++){
    for(j = 1, j <= n, j++){
        c[i][j] = 0;
        for(k = 1, k <= n, k++){
            c[i][j] = c[i][j] + c[i][j] * b[k][j];
        }
    }
}

1.找出基本操作的语句:
语句1:c[i][j] = 0;
语句2:c[i][j] = c[i][j] + c[i][j] * b[k][j];

2.语句的频度(运算次数):
语句1:n*n = n^2 
语句2:n*n*n = n^3

3.取最大:
时间复杂度T(n) = O(n^3)
//例题2:
sum = 0; i = 0;
while(i <= 100){
    sum = sum + i;
    i++;
}

1.找出基本操作的语句:
语句1:sum = sum + i;
语句2:i++;

2.语句的频度(运算次数):
语句1:100
语句2:100

3.取最大:
因为执行的频度是一个常数,与n无关
所以时间复杂度T(n) = O(1)
//例题3:
for(i = 1, i <= n, i++){
    y = y + 1;
    for(j = 1, j <= 2*n, j++){
        x = x + 1;
    }
}

1.找出基本操作的语句:
语句1:y = y + 1;
语句2:x = x + 1;

2.语句的频度(运算次数):
语句1:n
语句2:n*2n = 2n^2

3.取最大(常数省略):
时间复杂度T(n) = O(n^2)
//例题4:
s = 0;
while(n >= (s+1)*(s+1))
    s = s + 1;

1.找出基本操作的语句:
语句1:s = s + 1;

2.语句的频度(运算次数):
语句转化:(s+1)^2 <= n,即(s+1) <= √n
语句1:√n (根号n)


3.取最大(常数省略):
时间复杂度T(n) = O(√n)


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

South.return

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值