设为首页 加入收藏

TOP

C语言数据结构基础学习笔记——C语言基础
2019-03-22 18:08:02 】 浏览:82
Tags:语言 数据结构 基础 学习 笔记 语言基础

抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合,由逻辑结构、存储结构、数据的运算组成。

数据结构的逻辑结构有线性结构(一对一)、树(一对多)以及图(多对多)。

数据结构的存储结构有顺序结构、链式结构、索引结构和散列结构。

数据的运算由运算的定义以及运算的实现构成。

算法有以下五个特性:①有穷性;②确定性;③可行性;④输入;⑤输出。

时间复杂度T(n)=O(f(n)),其计算主要关注循环体的执行次数。

例1:

int sum=0;
for(int i=0;i<=n;i++){
  sum=sum+i;
}

i从0到n一共执行了n+1次,所以其时间复杂度为O(n).

例2:

int sum=0;
for(int i=1;i<=n;i=2*i){
    sum=sum+i;
}

i取值1,2,4,8…,设共循环了k次,则2k<=n即k<=log2n。所以其时间复杂度为O(log2n)。

对于多个循环体,时间复杂度的计算具有加法规则和乘法规则。

例3:

int x=0;
for(int i=1;i<=n;i++)
    x++;
for(i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
        x++;

设整体的时间复杂度为T(n),第一个循环的时间复杂度为T1(n),第二个循环体的时间复杂度为T2(n)。

则T(n)=T1(n)+T2(n)=MAX{T1(n),T2(n)}=O(n2),这是时间复杂度计算的加法规则。

例4:

int sum=0;
for(int i=1;i<=n;i++){
    for(int j=1;j<=n;j=2*j){
        sum=sum+j;
    }
}

设整体的时间复杂度为T(n),外循环的时间复杂度为T1(n),内循环体的时间复杂度为T2(n)。

则T(n)=T1(n)*T2(n)=O(nlog2n),这是时间复杂度计算的乘法规则。

对于常见的时间复杂度,从左至右,时间性能依次降低:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇git 源码学习(init-db) 提交版.. 下一篇C语言之四舍五入

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目