数据结构与算法A 第二章线性表
线性表的概念线性表的抽象数据类型
线性表的定义:线性表(简称为表)是零个或多个元素的有穷序列L=(k0,k1,…,kn-1);线性表是由称为元素的数据项组成的一种有限且有序的序列,这些元素也称为结点或表目
线性表的逻辑结构:L=<K,R>其中,K={k0,k1,…,kn-1},R={r:线性关系}。
i称为ki的索引或下表。所含元素的个数称为表的长度。长度为0的表称为空表。k0是第一个元素kn-1是最后一个元素。ki是ki+1的前驱,ki+1是ki的后继
唯一开始的结点:没有前驱;唯一终止的结点:没有后继。内部节点:有唯一的直接前驱也有一个唯一的直接后继
线性表的关系r是前驱关系,应具有反对称性和传递性
要求:
内部结点具有相同的数据类型
每个元素都有自己的位置[0,n-1]
在线性表上实施的操作:
对整个表的操作:创建或置空一个线性表、合并两个线性表、判断线性表是否为空或满
对表中元素的操作:查找线性表中满足一定条件的元素、在线性表中插入或删除指定元素
线性表ADT:
123456789101112131415 ...
数据结构与算法A 第一章概论
数据结构
数据结构的三要素:逻辑结构、存储(物理)结构、运算
数据的逻辑结构
逻辑结构反映了事物的组成结构及事物之间的逻辑关系
数据的逻辑结构可以用一个二元组B=(K,R)来表示。其中K是数据结点集合,R是数据之间的二元关系,其中对于<k,k’>∈R,我们称k’为k在关系R上的后继结点;k是k’在关系R上的前驱结点
结点的类型
结点的数据类型可以是基本数据类型,也可以是复合数据类型
结构的分类
用R的性质来刻画数据结构的特点,并进行分类
线性结构:r称为线性关系,也称为前驱关系。每一个结点最多只有一个前驱结点和一个后继结点。e.g.数组、链表、队列
树形结构:r称为层次关系。所有结点有且仅有一个前驱,但是后继的数目不加限制
图结构:结点的前驱和后继的数目不加任何约束
数学上看,树形结构和图结构的基本区别是“每个结点是否仅仅从属于一个直接前驱”而线性结构和树形结构的基本区别是“每个结点是否仅有一个直接后继”
自顶向下的逻辑结构分析设计方法:先明确数据结点,及其主要关系r,然后分析数据结点的数据类型。如果数据结点的逻辑结构比较复杂,那么把他作为下一个 ...
AI中的编程 Parallel Programming
并行编程的介绍 :CPU vs GPU :
CPU: Complex control circuit
good:Flexibility + Performance
bad:Expensive in terms of power
GPU: Simple control circuit
good:More circuit for parallel computation
good:More power efficient
bad:Less flexibility, more restrictive programming models
The CPU is Optimized for Latency,The GPU is Optimized for Throughput
CUDA is Written in C with Extensions :
The CUDA complier complies a CUDA program into two parts, which runs on CPUs and GPUs
step1:Data:cpu->gpu
step2 ...
AI中的编程 LeNet(pytorch讲解)
Data Representation in PyTorchThe Tensor in PyTorch is actually a multidimensional array1234567891011121314151617import torchimport numpy as np# 类比于C++中的includedata = [[1, 2], [3, 4]]# []代表多维(2x2)数组x_data = torch.tensor(data)# 转换成pytorch的tensor,将Python列表转换为PyTorch张量,数据类型根据输入自动推断np_array = np.array(data)# 将Python列表转换为NumPy数组,方便与NumPy库进行后续操作x_np = torch.from_numpy(np_array)# 将NumPy数组转换为PyTorch张量,这样可以利用NumPy的操作,且数据存储方式相同x_rand = torch.rand_like(x_data, dtype=torch.float)# 创建一个与x_data形状相同的张量,初始化,生成浮 ...
CS自学指南 CS61A: Structure and Interpretation of Computer Programs
第一章 使用函数构建抽象 :1.2 编程要素 :
语言的三种机制 :
原始表达式和语句:语言所关心的最简单的个体
组合方法:由简单元素组合构建复合元素
抽象方法:命名复合元素,并将其作为单元进行操作
任何强大的编程语言都必须能表达基本的数据和函数,并且提供对函数和数据进行组合和抽象的方法
表达式表示的数字可以与数学运算符组合形成一个复合表达式,解释器将对其进行求值:
1234567>>> 4242>>> -1 - -10>>> 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + 1/64 + 1/1280.9921875# 这些数学表达式使用中缀表示法(infix notation),运算符(例如 +、-、* 或 /)出现在操作数之间。
最重要的一种复合表达式是调用表达式,它将函数运用于一些参数上
例如,max 函数会输出一个最大的输入值,也就是将多个输入映射到了单个输出上
123456>>> max(7.5, 9.5)9.5'''调用表达式包含子表达式(sub ...
那些年背过的单词
英语六级高频生词 :
cognitive adj.认知的,认识能力的
device n.机械,装置;手段,策略;花招,计谋
executive adj.执行的;行政的 n.执行者
yield v.生产;放弃,让出;屈服,顺从;变形,折断 n.产量
manufacture n.制造业;制造 v.制造,加工
tremendous adj.极大地,非常的;精彩的,了不起的
dual adj.双重的,两重的
hazard n.危险,危害
intensive adj.加强的,密集的,集中的
tenant n.房客,佃户
fatigue n.疲劳,劳累
hinder v.妨碍,阻碍
foster v.收养,养育;促进 adj.收养的,代养的
reluctant adj.不情愿的,勉强的
indifferent adj.冷漠的,不积极的;一般的
derive v.取得,得到;起源,衍生
revenue n.收入,收益;政府税收
mortgage n&v.抵押
portray v.描写,描绘;扮演
dean n.教长,系主任
autonomy n.自治,自主权;人身自由
congress n. ...
[24/25赛季德甲联赛]第二轮 拜仁慕尼黑2-0弗莱堡
比赛综述 :拜仁慕尼黑2-0弗莱堡,凯恩造点+点射破门,穆勒替补登场锁定胜局
2024-09-01拜仁慕尼黑坐镇主场安联球场迎战弗莱堡。上半场双方真正有威胁的进攻不多,奥利赛传中,凯恩投球拱门造成对方球员手球犯规,主裁判判罚点球后凯恩亲自操刀命中帮助拜仁在第38分钟取得领先
下半场格纳布里传中,替补登场的穆勒写意调整摆脱完成破门
最后时刻堂安律射门打在替补登场不久的帕利尼亚手臂,主裁判判罚点球,霍勒主罚点球踢高没能改写比分。最终拜仁慕尼黑2-0战胜弗莱堡,迎来开局两连胜
比赛简评 :比赛呈现出的内容太令人失望,两场比赛皆是如此,明明赢球了,却高兴不起来
比赛开始前拜仁给出的4231阵型后腰搭档居然是穆西亚拉搭档帕夫洛维奇。基米希踢右边后卫的位置。最后比赛中实际上呈现的内容则是4141或者说是一个3241,帕夫洛维奇单后腰。祖宗之法变不得啊,虽然这场取得了胜利,但是场上呈现出来的内容只能用“很乱”来评价,甚至一度陷入被动
何以至此,中场硬度不够。帕夫洛维奇有很好的出球摆脱和推进的能力,但是正面拦截能力不如坐在替补席上的格雷茨卡,莱默尔,更不如刚买来的世界顶级后腰帕利尼亚。为什么花高价 ...
[24/25赛季德甲联赛]第一轮 拜仁慕尼黑3-2沃尔夫斯堡
比赛综述 :拜仁慕尼黑3-2沃尔夫斯堡,格纳布里、穆西亚拉破门,金玟哉失误导致丢球
2024-08-25拜仁慕尼黑做客大众汽车球场挑战沃尔夫斯堡。比赛第20分钟,博埃右路强突横穿,穆西亚拉轻松抢点破门,拜仁慕尼黑取得了1-0的领先。
第47分钟博埃禁区内犯规,马耶尔点射扳平。
第56分钟金玟哉中场传球被断,维默尔无私横传,马耶尔梅开二度反超比分。
第66分钟,穆勒替补上场不到一分钟便在角球进攻中制造混乱,凯恩头球摆渡,卡明斯基不慎自摆乌龙,帮助拜仁慕尼黑扳平比分。
第82分钟,格纳布里接凯恩的直塞推射远角得分,拜仁慕尼黑3-2反超比分。
比赛简评 :从结果出发确实是令人满意的,拜仁慕尼黑在客场局面不利的情况下完成了逆转,取得了赛季第一场德甲比赛的胜利,拿到了三分。
但是整个过程真的不尽如人意。拜仁最大的两个老毛病:阵地战进攻无力和后防出球能力差,没有得到任何的解决。对手的乌龙只能说是侥幸,剩下两个进球也都或多或少的利用了对手的失误和球形的个人能力。进攻战术的布置实际上没有取得任何效果。
本以为后卫出身崇尚瓜氏足球的孔帕尼能够解决拜仁的后防出球问题,但是金玟哉的失误不仅证明了放走德里 ...
我的
我的 :把球鞋塞入球包,穿上拖鞋,戴上耳机——这已经是我今天的第二场的足球了。运动四个小时过后,疲惫感漫步在全身上下,摔伤的胳膊肘还在隐隐作痛。
坐上了打好的出租车,舒适的后座让我紧绷的肌肉和神经获得了喘息的机会,好像我从未感觉如此舒坦和快乐过,至于我的思维也早已顺着车窗,飘飘然的,乘着晚风飞到其他地方了。
司机师傅看见我一身汗,便热情的问我是不是刚踢完球,这儿的场贵不贵。只可惜是朋友定的,我并不清楚。
看着他饶有兴致的听着,显然并不想结束这一话题。我便问他是不是也踢球。他抿了抿嘴,有些故作不在意的说他年轻的时候踢得很好。在中学和大学的校队都能踢上主力,然后便不再说话了。
看着他满脸的赘肉和圆润的肚皮,我颇有怀疑的问他踢什么位置。他说他踢边锋,年轻时候跑得很快,曾经学校运动会还拿过奖。我觉得他看出了我的怀疑,便接着说他后来不怎么运动了,因为踢球,腿很粗,很不好看。
小腿粗其实是踢球好的人共有的特点,也是足球人引以为豪的特征,早就成为了球技射术的代名词。我有些惊讶他居然会这么说,不过还是安慰他说小腿有肌肉很好看。
不过他却说不运动了以后肌肉不紧了,会显得很臃肿。接着他又感慨说以前一个月踢 ...
程序设计实习 新标准C++程序设计
第一章 从C到C++ :引用和函数参数的传递 :
C++定义“引用”的方式如下 : 类型名 & 引用名 = 同类型的某变量名;
例如 :
123int n;int & r = n;//r是一个引用,类型是int &
注意事项 : 定义引用要初始化 只能引用变量
常引用 : 前面加const,不能通过常引用修改引用的内容
12345int n;const int & r = n;//r是一个常引用,类型是const int &r = 200;//编译出错,不能通过常引用去修改其引用的内容
参数传值和参数传引用 : C++中函数参数传递有两种方式:传值和传引用 传值:形参表不是引用,改变形参不改变实参 传引用:形参表是引用,改变形参,实参也改变
参数传值例:
123456789101112131415161718192021#include <iostream>using namespace std;void Swap(int a,int b){ int temp; temp = a ...