一、基础

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. jvm类加载、初始化
  2. 把Zend Studio 5.5改为简体中文版的办法
  3. 智能理财在国内国外的发展现状
  4. Linux Shell常用技巧(三)
  5. 冷热rx-java可观察
  6. Camera 图像处理原理分析
  7. linux安装typecho教程,Typecho上手指南
  8. 每个叶子节点(nil)是黑色。_填充每个节点的下一个右侧节点指针
  9. 005-垃圾收集算法
  10. Atitit 乔姆斯基分类 语言的分类 目录 1.1. 0 –递归可枚举语法 1 1.2. 1 –上下文相关的语法 自然语言 1 1.3. 2 –上下文无关的语法 gpl编程语言 1 1.4. 3
  11. Atcoder Beginner Contest (ABC) 237 A - E
  12. 微信小程序-云数据库-嵌套数组的修改删除操作
  13. 安卓模拟器设置网速和延迟
  14. 影视账号涨粉10w,反套路营销获赞百万,小红内容趋势是什么?
  15. Java后台生成多个Excel并用Zip打包后(可以将excel文件放置到不同的目录)下载
  16. 判断自己的网络是不是公网IP
  17. 分布式内存网格Hazelcast源码导读
  18. 微距昆虫摄影的常用技巧
  19. 生成 ZIG-ZAG 扫描顺序MATLAB代码
  20. 关于面试找工作、工作中注意点的个人总结

热门文章

  1. imx6q 转换LVDS为VGA输出
  2. 锐浪报表 Grid++Report uniGUI Web表格打印
  3. 超全!最新互联网大厂的薪资和职级一览
  4. 移动端强大的富文本编辑器richeditor-android
  5. ECCI 电子通道衬度成像 简介
  6. 删除下拉框只找23火星软件_下拉框软件找28火星下拉
  7. linux进程通信方式总结
  8. java实现京东登陆界面_java实现京东云第三方登录
  9. 编程猫 python教材_编程猫全新推出系列编程教材补足编程系统性教学内容,教育部评审专家作序推荐...
  10. 关于导弹飞行控制系统的滚转稳定