一、基础

1.信息的表示是计算机科学的基础。

2.数据是信息载体,是描述事物的数、字符以及可输入计算机并被程序识别处理的符号的集合。

3.数据的基本单位是数据元素。(最小标识单位数据项组成了数据元素)

数据结构:某一数据元素的集合及该集合中所有数据元素间关系。Data_Structure={D,R}

D:数据元素集 R:D中所有数据元素之间关系的有限集。

线性结构:

①线性结构list:仅一个元素无前驱(表头),一个元素无后继(表尾),其余元素均有一个前驱与一个后继。

非线性结构:

②树结构tree:有且仅有一个元素(root)无前驱,可有多个后继,其余元素要有且仅有一个前驱

③图结构graph:可能有0-多个前驱或后继。(可出现孤立的点)

数据据结构涵盖:①元素间的逻辑关系即数据逻辑结构。

②元素及其关系在计算机存储中的表示即数据的存储表示,

③数据的运算即对元素的操作。

数据逻辑结构:①从逻辑上描述数据与存储无关②与元素本身形式内容无关③与元素相对存储位置无关④具体问题抽象出的数据模型

数据的存储表示:逻辑结构用语言实现。

适用内存:顺序/链式

适用外存:索引(树)、散列

数据处理前后应维持结构(逻辑关系)

数组 插入快,已知下标则访问快 搜索慢、删除慢,元素个数固定化
顺序数组 搜索速度快(快于未排序好的数组) 插入慢,搜索慢,元素个数固定化
链表 快速插入删除 搜索慢,即使有序也不能二分查找

二叉树可分左右满足二分查找。

1.在数据结构中,与所使用的计算机无关的是数据的( 逻辑)结构。

2.数据的逻辑结构可以分为(线性与非线性 )两类。

3.

数据元素是数据的基本单位

数据项是数据中不可分割的最小可标识单位

数据可由若干个数据元素构成

4.逻辑结构相同的数据,可采用多种不同的存储方法

二、抽象数据类型

数据类型:一个类型及定义在此类型上的操作

抽象:实现细节与详细的规范说明完全分开

ADT与数据结构的关系:①二者都表示数据类型②ADT是数据类型的逻辑表现③数据结构是ADT物理形式

三、算法分析

1.概述

数据规模不大时:运行时间函数的每个项数都有很重要的作用。

数据规模不断增大时:运行时间函数的增长速度只和高次项有关、具有同样高次项的运行时间函数增长速度一致、运行函数的差异性起决定作用的是增长率(高次项的增长速度)

基本考虑:处理一定规模(输入量的数目)的输入时该算法所需要执行的基本操作(完成该操作所需的时间与操作数的具体取值无关)数。

输入规模n对运行时间不产生影响。这称为常数运行时间。

2.数据分布的特点对很多检索算法都会有很大影响。在实时系统中我们比较关注最差情况的算法分析,在其他情况下,通常考虑平均情况,只要我们知道计算平均情况所需要的输入数据的分布即可。否则就只能求助于最差情况。

大O表示法:确定一个函数的上界,也就是确定函数可能运行的多糟。

使用O:f的增长率小于或等于某个函数的增长率。

使用Ω:f的增长率大于或等于某个函数的增长率。

使用θ:f的增长率等于某个函数的增长率。(上下界相同)两个Θ相同的函数有交换性。

大O 运算的简化法则。

3.并非所有的嵌套for循环都为Θ(n方)

for(k=1;k<=n;k*=2)

for(j=1;j<=k;j++)

为Θ(nlogn)  k部分为级数

4.顺序检索与二分法检索比较:顺序检索法的平均和最差情况代价Θ(n)原大于二分法的代价Θ(logn),但是二分法要求元素必须按照从高到低顺序保存,这个排序的要求可能会对时间代价产生损害,插入新元素时会增加时间代价,需要权衡。

5.多参数问题:不同参数的取值可能会对结果造成影响,不能轻易舍去。

Θ(P+ClogC)若p小一些而c大一些,clogc则不能忽略。

6.空间代价

数据结构的主要目的是使用恰当的方法存储数据,所有这类并非真正数据结构的附加信息如指针等被称为结构性开销(应尽量小)

练习:

a:是正确的,满足法则。

b:是错误的,T1(N)为N的立方+N的平方,T2(N)为N的立方+N,显然T1-T2=O( N)而不等于原先的O(F(N))。

c:是错误的,T1=T2=N的平方,显然T1/T2=O(1).

d:  是错误的,O的使用方法为f的增长率小于某个函数的增长率,T1和T2同小于等于某个函数,但是T1却可能大于T2,所以错误。

a:t=5x0.5ms=2.5ms

b:t=0.5x5xlog5ms=2.5log5ms

c:t=5x5x0.5ms=12.5ms

d:t=5x5x5x0.5ms=67.5ms

此算法仅调用了一重for循环,故时间复杂度为O(n)

要使算法的时间复杂度为O(logn),要使用分治的思想并递归调用函数。

先编写一个swap函数用于交换某两项。

数据结构与算法分析(一)基础部分与算法分析方法相关推荐

  1. Python数据结构与算法(1.7)——算法分析

    Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...

  2. 数据结构与算法详解(含算法分析、动图图解、Java代码实现、注释解析)

    数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 数据结构和算法的关系: 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数 ...

  3. 数据结构与算法之基础概述

    目录 数据结构和算法的重要性 数据结构概述 逻辑结构 存储结构 算法概述 如何理解"大O记法" 时间复杂度 空间复杂度 数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海 ...

  4. java双链表基本方法_Java数据结构之双端链表原理与实现方法

    本文实例讲述了Java数据结构之双端链表原理与实现方法.分享给大家供大家参考,具体如下: 一.概述: 1.什么时双端链表: 链表中保持这对最后一个连点引用的链表 2.从头部插入 要对链表进行判断,如果 ...

  5. C++基础:各种输入方法总结

    输入原理简述: 程序的输入都建有一个缓冲区,即输入缓冲区.每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取 ...

  6. c语言cin输入数组,C++基础:各种输入方法总结cin.get()、

    原标题:C++基础:各种输入方法总结cin.get(). 在C++中,各种输入方法还是不少的,而且各有所异,本文做一点简要总结,主要涉及如下内容:cin.cin.get().cin.getline() ...

  7. java基础 ArrayList集合基本方法演示

    java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator;public class ArrayLis ...

  8. (转)jquery基础教程八 load方法及小技巧

    首先我们看看手册上的描述 load(url, params, callback) 装入一个远程HTML内容到一个DOM结点. 注意:避免用装入的scripts脚本,装入脚本改用$.getScript. ...

  9. 转移印花技术基础知识及应用方法

    转移印花技术基础知识及应用方法 1. 转移印花法特点 转移印花图案具有花型逼真.花纹细致.层次清晰.立体感强等特点,可印制自然风景及艺术性强的图案. 转移印花设备具有结构简单.占地小.投资少.经济效率 ...

  10. 零基础自学画画的方法有哪些

    本文由"学美术上美术集网校"原创,图片素材来自网络,仅供学习分享 零基础自学画画的方法有哪些?首先说明,自学真的很难,要比常人付出多很多的努力和时间,如果觉得自己做不到又坚持要画画 ...

最新文章

  1. phpcms 前台模板替换成官网类型的网站
  2. pandas删除数据库 python_Python常见的科学计算库
  3. Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
  4. wordpress python 采集_Python3利用Selenium3模拟wordpress博客登陆
  5. python绘制三角函数图像_用python画三角函数
  6. python 判断素数
  7. 2022搜狐校园 情感分析 × 推荐排序 算法大赛
  8. 高数 | 【一元函数微分学】导数部分经典快速例题
  9. 数据显示:中国的程序员是世界上最牛的程序员
  10. Android封装一个自定义标题栏
  11. 拳王虚拟项目公社:建一个虚拟资源流量池,兼职副业卖虚拟资源商品月入5000
  12. 关于AI-人工智能看法,进行漫谈。
  13. java applet插件_Atitit.java的浏览器插件技术 Applet japplet attilax总结
  14. [轻笔记]Pytorch语义分割输出转换为图像显示
  15. echarts 词云图使用 + vue
  16. DAMO-YOLO第三方数据训练教程
  17. 让自己更优秀的 16 条法则(建议收藏)
  18. 使用kubespary安装k8s集群
  19. .removeAttribute is not a function
  20. python简易时钟,显示到毫秒

热门文章

  1. 食品收银 食品收银系统 食品收银软件 食品收银软件排行榜
  2. 抖音矩阵系统源码搭建,抖音矩阵系统开发原理,抖音矩阵系统搭建
  3. Unity_Demo | 中世纪风3D-RPG游戏
  4. 电子智能化专包有哪些要求和标准
  5. FixFox 打包xpi扩展
  6. 元学习—MAML模型Pytorch实现
  7. java web web.xml配置_web.xml配置详解
  8. element中Tree组件更新后不自动收起
  9. 软件项目经理应具备的素质和条件_项目经理应具备的素质和能力
  10. maiark京东短信登录