算法传智播客C和C 与数据结构基础讲义

传智播客  时间:2021-01-30  阅读:()

传智播客C和C++与数据结构基础讲义

传智扫地僧

1 、数据结构概念

1 .1数据结构相关概念

1 .1 .1疑惑

1 、我学完了C语言可是现在感觉还是不出代码。

2、为什么会有各种各样的程序存在

3、程序的本质是什么

程序是为了具体问题而存在的程序需要围绕问题的解决进行设计同一个问题可以有多

种解决方案如何追求程序的“性价比” 是否有可量化的方法判别程序的好坏

1 .1 .2数据结构起源

计算机从解决数值计算问题到解决生活中的问题现实生活中的问题涉及不同个体间的

复杂联系需要在计算机程序中描述生活中个体间的联系数据结构主要研究非数值计算

程序问题中的操作对象以及它们之间的关系不是研究复杂的算法

1 .1 .3数据结构中的基本概念

数据-程序的操作对象用于描述客观事物(int a, int b,)数据的特点

可以输入到计算机可以被计算机程序处理数据是一个抽象的概念将其进行分类后得

到程序设计语言中的类型。如int  float  char数据元素组成数据的基本单位数据项一个数据元素由若干数据项组成数据对象-性质相

同的数据元素的集合 (比如数组链表)

1 /72

//友情提示来自结构体课堂代码

//声明一个结构体类型struct_MyTeacher //一种数据类型

{char n ame[32];char ti le[32];int age;char addr[128];

} int mai n21()

{struct_MyTeacher t1; //数据元素struct_MyTeacher tArray[30]; //数据对象memset(&t1,0, sizeof(t1));strcpy(t1.name, "name"); //数据项strcpy(t1 .addr, "addr"); //数据项strcpy(t1.ti le, "addr"); //数据项t1 .age=1;

数据元素之间不是独立的存在特定的关系这些关系即结构

数据结构指数据对象中数据元素之间的关系

女口数组中各个元素之间存在固定的线性关系

编一个“好”的程序之前必须分析待处理问题中各个对象的特性,关系。 以及对象之间的基本概念总结

2/72

1 .1 .4数据的逻辑结构

指数据元素之间的逻辑关系。即从逻辑关系上描述数据它与数据的存储无关是独立于计

算机的。逻辑结构可细分为4类

个对5*3/72

1 .1 .5数据的物理结构

1 .1 .6数据的运算

4/72

1 .2、算法

1 .2.1算法概念

算法是特定问题求解步骤的描述

在计算机中表现为指令的有限序列

算法是独立存在的一种解决问题的方法和思想。 对于算法而言语言并不重要重要的是思想。

122算法和数据结构区别

数据结构只是静态的描述了数据元素之间的关系

高效的程序需要在数据结构的基础上设计和选择算法

===程序=数据结构+算法

总结

算法是为了解决实际问题而设计的

数据结构是算法需要处理的问题载体

数据结构与算法相辅相成

1 .2.3算法特性

输入

算法具有o个或多个输入

输出

算法至少有1个或多个输出有穷性

算法在有限的步骤之后会自动结束而不会无限循环确定性

算法中的每一步都有确定的含义不会出现二义性可行性

算法的每一步都是可行的

5/72

1 .2.4算法效率的度量

6/72

}return ret;

}long sum3(i nt n)

{long ret=0;if(n>0)

{ret=(1 +n) *n/2;

}return ret;

}int mai n()

{printf("%d\n", sum1(100));prin tf("%d\n", sum2(100));prin tf("%d\n", sum3(100));return 0;

int fun c(i nt a[], in t le n)

{int i=0;i nt j=0;int s=0;for(i=0; i<le n; i++)n

{for(j=0; j<le n; j++) n

{s+=i*j; 〃 n*n

}

}return s;

}

〃 n*n

7/72

Aft S*C(4nt9| ffitCtn) i 0(znn■I 12 1 3I 1n—2 16

n■1 2 4 6

z 8 7 15n=5 孔1n• 10 200 JI 231u.WO 20000 301 20301

n-L<m 2000000 3001 1 2003001

n■血000 F200000000 30001 200030001

n■100*000 200000(X)000 300001 20000300001D■IjCOO.OOO 2000000000000 3000001 2000001000001

注意1判断一个算法的效率时往往只需要关注操作数量的最高次项其它次要项和常数项可以忽略。注意2:在没有特殊说明时我们所分析的算法的时间复杂度都是指最坏时间复杂度。

2、大0表示法

算法效率严重依赖于操作 (Operatio n)数量

在判断时首先关注操作数量的最高次项操作数量的估算可以作为时间复杂度的估算

0(5)=0(1)

0(2n+ 1)=0(2n)=0(n)

0( n2+n+ 1)=0(n2)

0(3 n3+1)=0(3 n3)=0(n 3)

常见时间复杂度tMnfcat酒Kt lit 正戒术as

12| 0(1) 常4L阶

2n-+-3 OS) 建忖吟

3nJ+2n+1 0(//) !帄方阶

51n^jn+20 O(1ogo) L»t*t阶

2n+弓n Io艮-5*19 0(/rio-gA) nlo-gn阶

■*'3n+4j 0(/Is) 立才阶

2" i0(2") 1

关系

0(1)<O(lo gw)<0(Jt)<O(nto gw)<O(n2}<0(,)<0(2')<0(制)<O(nK)

8/72

3、算法的空间复杂度

算法的空间复杂度通过计算算法的存储空间实现

S(n)=O(f(n))

其中 n为问题规模 f(n))为在问题规模为n时所占用存储空间的函数大0表示法同样适用于算法的空间复杂度当算法执行时所需要的空间是常数时空间复杂度为0(1)

空间与时间的策略

多数情况下算法执行时所用的时间更令人关注如果有必要可以通过增加空间复杂度来降低时间复杂度同理也可以通过增加时间复杂度来降低空间复杂度

练习1 :分析suml sum2 sum3函数的空间复杂度

0(4n+12) 0(8)=0(1)0(4)=0(1)

总结实现算法时需要分析具体问题对执行时间和空间的要求。

9/72

CYUN专注海外精品服务器资源 国庆钜惠 最低5折起 限量促销

国庆钜惠 最低5折起 限量促销CYUN专注海外精品服务器资源,主营香港CN2 GIA、美国CERA、美国高防服务器资源,实体公司,ISP/IDC资质齐全,客服配备齐全。本次针对国庆推出非常给力的促销活动,旗下所有平台同享,新老客户同享,限时限量,售完截止。活动截止时间:2021年10月9日官网地址:www.cyun.net参与机型:香港CN2 GIA云服务器、香港双程CN2云服...

SugarHosts糖果主机,(67元/年)云服务器/虚拟主机低至半价

SugarHosts 糖果主机商也算是比较老牌的主机商,从2009年开始推出虚拟主机以来,目前当然还是以虚拟主机为主,也有新增云服务器和独立服务器。早年很多网友也比较争议他们家是不是国人商家,其实这些不是特别重要,我们很多国人商家或者国外商家主要还是看重的是品质和服务。一晃十二年过去,有看到SugarHosts糖果主机商12周年的促销活动。如果我们有需要香港、美国、德国虚拟主机的可以选择,他们家的...

LOCVPS(29.6元/月)KVM架构 香港/美国机房全场8折

LOCVPS商家我们还是比较熟悉的老牌的国内服务商,包括他们还有其他的产品品牌。这不看到商家的信息,有新增KVM架构轻量/迷你套餐,提供的机房包括香港云地和美国洛杉矶,适用全场8折优惠,月付29.6元起。LOCVPS是一家成立于2011年的稳定老牌国人商家,主要从事XEN、KVM架构的国外VPS销售,主推洛杉矶MC、洛杉矶C3、香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡等数据中心...

传智播客为你推荐
金士顿4g内存条金士顿DDR3 4G的内存有什么型号?马云将从软银董事会辞职阿里巴巴马云为啥叫董事局主席而不叫董事会主席?董事局和董事会啥区别?郑州软银郑州有没有大一些的网络公司啊,售后服务好的,我想把公司推广这一块外包出去?天气预报哪个好用哪个最准确手机上的天气预报软件,哪个最准,最好用?绝地求生加速器哪个好绝地求生的加速器哪个好用?手机杀毒软件哪个好什么手机杀毒软件最好用?网页传奇哪个好玩近有什么好玩的网页传奇介绍么无纺布和熔喷布口罩哪个好一次性口罩的熔喷布和KN95的熔喷布有什么不同?云盘哪个好云盘有哪些,哪个云盘好百度空间登录百度空间怎么登陆
网站域名备案查询 重庆vps租用 qq空间域名 中国万网域名 唯品秀 紫田 gitcafe godaddy域名优惠码 天猫双十一秒杀 dd444 1美金 web服务器安全 ca187 国外的代理服务器 中国域名 聚惠网 沈阳idc forwarder ubuntu安装教程 性能测试工具 更多