数据结构——求时间复杂度

本文介绍了数据结构的基础概念,包括数据、数据元素、逻辑结构与存储结构的区别,以及算法的定义和分析,重点阐述了时间复杂度的一层、两层和多层循环实例。
摘要由CSDN通过智能技术生成

前言

上一篇博客上给大家介绍了线性表的逻辑结构,

接下来我们将针对一部分内容进行剖析。

通过这篇文章的了解,我们将初步了解数据结构与算法

(文章内容参考《数据结构(第二版)》陈越主编)

1.基础认知

(1)数据结构

数据结构简单来说就是存储,组织数据与特定关系

研究数据结构就是研究数据的逻辑结构,存储结构及其基本操作

 数据:是客观事物的符号表示

数据元素:是数据的基本单位,可由若干个数据项组成

数据项:是数据的不可分割的最小单位

数据对象:是性质相同的数据元素的集合,是数据的一个子集

 与数据元素本身的形式,内容,相关位置,个数无关的是数据的逻辑结构

   与数据元素本身的形式,内容,相关位置,个数相关的是存储结构,存储实现及运算实现

 数据对象集的逻辑结构:(1)集合(2)线性(3)树(4)图形

 数据对象集在计算机中的物理存储结构:(1)顺序(2)链式(3)索引(4)散列(哈希)

(2)算法 

算法:解决问题的有限运算序列 

 计算机中的算法指的是解决某一个问题的有限运算序列

它必须具备(输入,)输出,可执行性,有穷性和确定性

 算法分析的两个主要方面:

1)空间复杂度S(n):根据算法写成的程序在执行时占用存储单元的长度。这个长度往往与输入数据的规模n有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。

2)时间复杂度T(n):根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模n有关。时间复杂度过高的低效算法可能导致我们有生之年都等不到运行结果。

2.时间复杂度

(1)一层循环:

        解题思路:

                        1.列出循环趟数t及每轮循环i的变化值

                        2.找到t与i的关系(记为一式)

                        3.确定循环停止条件(记为二式)

                        4.联立两式解方程

                        5.写出结果

【例】

        i=n*n;

        while(i!=1)

        i=i/2;

         

        【解】        

        t =  0           1           2         3       ···

        i =  n^2    n^2/2    n^2/4   n^2/8   ···

——> i=n^2/2^t与i=1联立得 n^2/2^t = 1

所以T=O(logn)

(2)两层循环:

解题思路:

                1.列出外层循环中i的变化值

                2.列出内层语句的执行次数

                3.求和/积写结果

【例】

        int m=0,i,j;

        for(i=1;i<=n;i++)

                for(j=1;j<=2*i;j++)

                        m++;

【解】

                            i : 1  2  3  ···  n

内层语句执行次数:2 4  6  ```  2n

等差数列求和n(2+2n)/2=n(n+1)

所以T=O(n^2)     

(3)多层循环:

解题思路:

方法一:抽象为计算三维体积

方法二:列式求和

第三种要根据具体问题细分,如果有疑问,私信我哦uu们

 

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值