初始数据结构+算法复杂度

一、绪论

1、什么是数据结构?

​ 程序设计=数据结构+算法

​ 简单来说数据结构就是关系,数据结构分为逻辑结构物理结构

逻辑结构:指数据对象中数据元素之间的相互关系;

物理结构:数据的逻辑结构在计算机中的存储方式。

2、数据结构分类

四大逻辑结构

​ 1、集合结构:数据元素除了同属于一个集合外,两两之间没有任何关系,不存在谁优先谁;

​ 2、线性结构:元素之间一对一的线性关系;

​ 3、树形结构:元素间存在一种一对多的层次关系;

​ 4、图形结构:数据元素间是多对多关系。

物理结构

存储器主要指内存而言。有两种存储方式:

​ 1、顺序存储:把数据元素存放在地址连续的存储单元里,数据见的逻辑关系和物理关系是一致的;(普通排队、数组的存放)

​ 2、链式存储:把数据元素存放在任意的存储单元里,存储单元可连续也可不连续。需给定数据元素地址(指针信息,通过指针将各个数据元素链接起来)。(叫号排队)

优缺分析:顺序存储简单但不灵活,链式存储形式更为灵活,但多了指针存储。

二、数据结构和算法的关系

​ 数据结构和算法是紧密联系,互不分离的,已实现程序设计,从而实现某一功能。

1、算法初体验

​ 例:一个问题:1+2+3+……+100计算问题

思路一:直接计算for循环,运行100次循环;
思路二:首尾想加,(1+100)*50,运行1次即可。

什么是算法:解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。通俗来说就是实现某一目的的技巧和方式。

算法具有多样性:同一个问题可用多个算法解决;一个算法也不可能解决通问题。

2、算法的特性

​ 输入:0个或多个输入;

​ 输出:至少有1个或多个输出;

​ 有穷性:执行有限步骤后,自动结束而不会无限循环;

​ 确定性:每个步骤含义确定,没有歧义,

​ 可行性:每一步都可被完成。

3、算法设计要求

​ 1、正确性:具备必备条件,反映需求,给出正确答案;

正确性的四个层次

​ 2、可读性:方便阅读理解交流;

​ 3、健壮性:数据不合法时,算法能做出处理而不产生异常或崩溃;

​ 4、时间效率高存储量低。(时间复杂度和空间复杂度)

三、时间复杂度和空间复杂度

1、算法效率的度量方法

主要指执行时间:

​ a)事后统计方法,预先编好测试程序去测试已实现算法;事后诸葛亮,且和实现硬件平台有关系。

​ b)事前分析估算法:程序编写前,依据统计方法对算法进行估算。

一个程序的运行时间主要依赖于:算法好坏数据规模

2、算法的时间复杂度

定义:算法语句执行的总次数T(n)随着问题规模n的变化情况确定其数量级;侧重于变化潜力,而不是当前某个值,记作O()。

一般数量级增长最慢,算法最优。

求算法复杂度攻略

1、用常数1取代运行时间中所有加法常数;

2、修改后的运行数函数中,只保留最高阶项;

3、如最高阶项存在且系数不是1,则去除该项的常数系数;

4、最后所得结果就是大O阶。

1、算法复杂度大类(攻略具体化)

a、常数阶;b、线性阶;c、平方阶(两个不同循环嵌套例子);d、对数阶…等

这里写图片描述

这里写图片描述

2、函数调用的时间复杂度分析

类似循环嵌套,遵循攻略计算即可!

最坏情况:算法时间复杂度需要花费的最长时间;一种保证,最重要的需求,通常的运行时间是指嘴还请况的运行时间。

平均情况:平均的运行时间,期望的运行时间。

3、算法的空间复杂度

存储负担~

可以考虑用空间换取时间;或时间换取空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值