数据结构课上笔记2

今天继续说明了一些基本概念,讲解了时间空间复杂度。

(对于概念的掌握也很重要)

 

元素之间的关系在计算机中有两种表示方法:顺序映像和非顺序映像,由此得到两种不同的储存结构:

顺序存储结构和链式存储结构。

 

顺序:根据元素在存储器中的相对位置表示关系

链式:借助指针表示关系

 

数据类型:是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。(仅仅取决于逻辑特性,与其在计算机内部如何表示和实现无关)

 

定义抽象数据类型的一种格式:

ADT name{

数据对象:<>

数据关系:<>

基本操作:<>

}ADT name

 

算法:是对特定问题求解步骤的一种描述。

算法五个特性:

  1. 有穷性:有穷的时间内完成,或者可以说是可接受的时间完成
  2. 确定性:对于相同的输入只能得到相同的输出
  3. 可行性:描述的操作都可以执行基本操作有限次来实现
  4. 输入:零个或多个输入。取自于某个特定对象的集合
  5. 输出:一个或多个输出

 

设计要求:正确性、可读性、健壮性、效率与低存储量需求。

执行频度概念:是指通过统计算法的每一条指令的执行次数得到的。

执行频度=算法中每一条语句执行次数的和

一般认定每条语句执行一次所需时间为单位时间(常数时间)O(1)

 

几个小知识和小问题:

1)循环执行次数n+1次,不是n次。第一次执行i=1和判断i<=n以后执行n次判断和i++。所以该语句执行了n+1次。在他的控制下,循环体执行了n次。

2)四个并列程序段:分别为O(N),O(N^2),O(N^3),O(N*logN),整个程序时间复杂度为O(N^3),因为随着N的增长,其它项都会忽略

3)算法分析的目的是分析算法的效率以求改进

4)对算法分析的前提是算法必须正确

5)原地工作指的不是不需要空间,而是空间复杂度O(1),可能会需要有限几个变量。

实现统一功能两种算法:时间O(2^N),O(N^10),假设计算机可以运行10^7秒,每秒可执行基本操作10^5次,问可解问题规模各为多少?选哪个更为合适?

计算机一共可执行10^7*10^5=10^12次

第一种:n=log2,(10^12)=12log(2,10)

第二种:n=(10^12)^0.1

显然1更适用。

虽然一般情况多项式算法比指数阶更优

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双端单调队列

上次我们介绍了单调栈结构https://blog.csdn.net/hebtu666/article/details/82717317 这次介绍一种新的数据结构&#xff1a;双端队列&#xff1a;双端队列是指允许两端都可以进行入队和出队操作的队列&#xff0c;其元素的逻辑结构仍是线性结构。将队列的两端分别称为前端和后…

KMP子字符串匹配算法学习笔记

文章目录学习资源什么是KMP什么是前缀表为什么一定要用前缀表如何计算前缀表前缀表有什么问题使用next数组来匹配放码过来构造next数组一、初始化二、处理前后缀不相同的情况三、处理前后缀相同的情况使用next数组来做匹配代码总览测试代码时间复杂度分析学习资源 字符串&…

数组实现队列

数组实现队列结构&#xff1a; 相对栈结构要难搞一些&#xff0c;队列的先进先出的&#xff0c;需要一个数组和三个变量&#xff0c;size记录已经进来了多少个元素&#xff0c;不需要其它萌新看不懂的知识。 触底反弹&#xff0c;头尾追逐的感觉。 循环使用数组。 具体解释…

栈/队列 互相模拟实现

用两个栈来实现一个队列&#xff0c;完成队列的Push和Pop操作。 队列中的元素为int类型。 思路&#xff1a;大概这么想&#xff1a;用一个辅助栈把进第一个栈的元素倒一下就好了。 比如进栈1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5 第一个栈&#xff1a; 5 …

数据结构课上笔记3

这节课介绍了线性表结构和顺序表示的一部分内容。 操作太多&#xff0c;而且书上有&#xff0c;就不一一介绍分析了。 线性表定义&#xff1a;n个数据元素的有限序列。 特点&#xff1a; 存在唯一一个称作“第一个”的元素。存在唯一一个称作“最后一个”的元素除最后一个元…

内存分区

之前一直比较懵&#xff0c;想想还是单独写一个短篇来记录吧 一般内存主要分为&#xff1a;代码区、常量区、静态区&#xff08;全局区&#xff09;、堆区、栈区这几个区域。 代码区&#xff1a;存放程序的代码&#xff0c;即CPU执行的机器指令&#xff0c;并且是只读的。 常…

栈的排序

一个栈中元素的类型为整型&#xff0c;现在想将该栈从顶到底按从大到小的顺序排序&#xff0c;只许申请一个栈。除此之外&#xff0c;可以申请新的变量&#xff0c;但是不能申请额外的数据结构&#xff0c;如何完成排序&#xff1f; 思路&#xff1a; 将要排序的栈记为stack,申…

双链表实现

以前写的不带头的单链表实现&#xff0c;当时也啥也没学&#xff0c;好多东西不知道&#xff0c;加上一心想压缩代码&#xff0c;减少情况&#xff0c;所以写得不太好。 请教了老师&#xff0c;首先是命名问题和代码紧凑性等的改进。还有可读性方面的改进&#xff0c;多写了一…

数据结构作业1 讲解和拓展

原题来自雪梨教育 http://www.edu2act.net/task/list/checked/ 题后给出讲解和扩展 任务1_1 比较下列算法的时间复杂度 任务描述&#xff1a; 下面给出4个算法&#xff0c;请分析下列各算法的时间复杂度&#xff0c;请写清楚题号&#xff0c;并将每个小题的分析过程写出来&…

KMP+DP1

Description 求一个字符串的所有前缀在串中出现的次数之和 Input 多组用例&#xff0c;每组用例占一行为一个长度不超过100000的字符串&#xff0c;以文件尾结束输入 Output 对于每组用例&#xff0c;输出该字符串的所有前缀在串中出现的次数之和&#xff0c;结果模256 Samp…

数据结构课上笔记5

介绍了链表和基本操作 用一组物理位置任意的存储单元来存放线性表的数据元素。 这组存储单元既可以是连续的&#xff0c;也可以是不连续的&#xff0c;甚至是零散分布在内存中的任意位置上的。因此&#xff0c;链表中元素的逻辑次序和 物理次序不一定相同。 定义&#xff1a; …

并查集入门三连:HDU1213 POJ1611 POJ2236

HDU1213 http://acm.hdu.edu.cn/showproblem.php?pid1213 问题描述 今天是伊格纳修斯的生日。他邀请了很多朋友。现在是晚餐时间。伊格纳修斯想知道他至少需要多少桌子。你必须注意到并非所有的朋友都互相认识&#xff0c;而且所有的朋友都不想和陌生人呆在一起。 这个问题…

Java设计模式(2 / 23):观察者模式

定义 观察者&#xff08;Observer&#xff09;模式定义了对象之间的一对多依赖&#xff0c;这样一来&#xff0c;当一个对象改变状态时&#xff0c;它的所有依赖者都会收到通知并自动更新。 OO设计原则&#xff1a;为了交互对象之间的松耦合设计而努力。 案例&#xff1a;气…

二叉树概述

各种实现和应用以后放链接 一、二叉树的基本概念 二叉树&#xff1a;二叉树是每个节点最多有两个子树的树结构。 根节点&#xff1a;一棵树最上面的节点称为根节点。 父节点、子节点&#xff1a;如果一个节点下面连接多个节点&#xff0c;那么该节点称为父节点&#xff0c;它…

Java设计模式(1 / 23):策略模式

定义 策略&#xff08;Strategy&#xff09;模式定义了算法族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换 &#xff0c;此模式让算法的变化独立于使用算法的客户。 案例&#xff1a;模拟鸭子应用 一开始 新需求&#xff1a;模拟程序需要会飞的鸭子 在父类新…

Java设计模式(3 / 23):装饰者模式

文章目录定义案例1&#xff1a;三点几啦首次尝试再次尝试设计原则&#xff1a;类应该对扩展开放&#xff0c;对修改关闭尝用装饰者模式装饰者模式特征本例的类图放码过来饮料类HouseBlendDarkRoastEspressoDecaf调料装饰类MilkMochaSoyWhip运行测试类案例2&#xff1a;编写自己…

c语言知识体系

原文&#xff1a;https://blog.csdn.net/lf_2016/article/details/80126296#comments

《游戏编程入门 4th》笔记(1 / 14):Windows初步

文章目录Windows编程概述获取Windows理解Windows消息机制多任务多线程事件处理DirectX快速概览Direct3D是什么Window程序基础创建第一个Win32项目理解WinMainWinMain函数调用完整的WinMainGetMessage函数调用寻求帮助Windows编程概述 DirectX&#xff0c;流行的游戏编程库。它…

17校招真题题集(1)1-5

注&#xff1a;本系列题目全是按照通过率降序来排列的&#xff0c;基本保证题目难度递增。 1、 题目名称&#xff1a;游戏任务标记 来源&#xff1a;腾讯 题目描述 游戏里面有很多各式各样的任务&#xff0c;其中有一种任务玩家只能做一次&#xff0c;这类任务一共有1024个…

《游戏编程入门 4th》笔记(2 / 14):监听Windows消息

文章目录编写一个Windows程序理解InitInstanceInitInstance函数调用InitInstance的结构理解MyRegisterClassMyRegisterClass函数调用MyRegisterClass的作用揭露WinProc的秘密WinProc函数调用WinProc的大秘密什么是游戏循环The Old WinMain对持续性的需要实时终止器WinMain和循环…