《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)

大话数据结构(C#实现)

大话数据结构(C#实现)

版本

作者

参与者

完成日期

备注

YanlzStruct_C#Base_V01_1.0

严立钻

 

2020.02.10

 

 

 

 

 

 

 

##《大话数据结构(C#实现)》发布说明:

++++“大话数据结构(C#实现)”:是对“软件架构设计”的综合探索;【程序=数据结构+算法】:数据结构是程序设计的重要技术;数据结构在某种程度上和设计模式类似,都是前辈的武功套路,不同的是,设计模式是近几十年的卓越程序员的智慧结晶,而数据结构是几百上千年的无数科学家、数学家的智慧沉淀,更具有深厚的背景;数据结构是相互之间存在一种或多种特定关系的数据元素的集合;数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科

++++“大话数据结构(C#实现)”:定位在一个科普类知识,了解“数据结构”以及相关算法研究,以及软件架构设计和框架编程

 

@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)

 

$$$$博客溯源:

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

++++【软件架构设计】分类:https://blog.csdn.net/vrunsoftyanlz/category_9708791.html

++++【大话数据结构(C实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104242455

++++【大话数据结构( C# 实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104243017

++++【大话设计模式( C# 实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104256981

##《大话数据结构(C#实现)》目录

#第一篇:数据结构基础篇

#第二篇:进阶算法篇

#第三篇:数据结构剖析篇

#第四篇:数据结构拓展篇

#第五篇:立钻哥哥带您数据结构实战

 

 

 

#第一篇:数据结构基础篇

#第一篇:数据结构基础篇

#第一篇:数据结构基础篇

++++立钻哥哥:数据结构是相互之间存在一种或多种特定关系的数据元素的集合;数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率;数据结构往往同高效的检索算法和索引技术有关

++++数据结构(Data Structure)是带有结构特性的数据元素的集合,它研究的数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型

++++数据结构的研究内容是构造复杂软件系统的基础,它的核心技术是分解与抽象;通过分解可以划分出数据的3个层次;再通过抽象,舍弃数据元素的具体内容,就得到逻辑结构

++数据的逻辑结构

++++立钻哥哥:数据的逻辑结构指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后间关系,而与他们在计算机中的存储位置无关;逻辑结构包括:集合线性结构树形结构图形结构

++++[集合]:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系

++++[线性结构]:数据结构中的元素存在一对一的相互关系

++++[树形结构]:数据结构中的元素存在一对多的相互关系

++++[图形结构]:数据结构中的元素存在多对多的相互关系

 

++常用的数据结构

++++立钻哥哥:在计算机科学的发展过程中,数据结构也随之发展;程序设计中常用的数据结构包括:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等

++++[数组(Array)]:数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合;数组可以说是最基本的数据结构,在各种编程语言中都有对应;一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等;数组还可以有一维、二维以及多维等表现形式

++++[栈(Stack)]:栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作;栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出;栈在汇编语言程序中,经常用于重要数据的现场保护;栈中没有数据时,称为空栈

++++[队列(Queue)]:队列和栈类似,也是一种特殊的线性表;和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作;一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头;队列中没有元素时,称为空队列

++++[链表(Linked List)]:链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点;链表由一系列数据结点构成,每个数据结点包括数据域和指针域两部分;其中,指针域保存了数据结构中下一个元素存放的地址;链表结构中数据元素的逻辑顺序时通过链表中的指针链接次序来实现的

++++[树(Tree)]:树是典型的非线性结构,它是包括,2个结点的有穷集合K;在树结构中,有且仅有一个根结点,该结点没有前驱结点;在树结构中的其他结点都有且仅有一个前驱结点,而且可以有两个后继结点,m>=0

++++[图(Graph)]:图是另一种非线性数据结构;在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对;如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系

++++[堆(Heap)]:堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆;堆的特点是根结点的值是所有结点中最小的或者最大的,并且根结点的两个子树也是一个堆结构

++++[散列表(Hash)]:散列表源自于散列函数(Hash Function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录

#第二篇:进阶算法篇

#第二篇:进阶算法篇

#第二篇:进阶算法篇

++++立钻哥哥:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制;一个算法的优劣可以用空间复杂度与时间复杂度来衡量;算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态;一个状态到另一个状态的转移不一定是确定的;随机化算法在内的一些算法,包含了一些随机输入

++++一个算法应该具有5个重要特征:有穷性确切性输入项输出项可行性

++++[有穷性(Finiteness)]:算法的有穷性是指算法必须能在执行有限个步骤之后终止

++++[确切性(Definiteness)]:算法的每一步骤必须有确切的定义

++++[输入项(Input)]:一个算法由0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件

++++[输出项(Output)]:一个算法有一个或多个输出,以反映对输入数据加工后的结果;没有输出的算法是毫无意义的

++++[可行性(Effectiveness)]:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)

++算法

++++立钻哥哥:算法(Algorithm)是程序设计的灵魂,它是用系统的方法描述解决问题的策略机制;一个正确的算法满足的性质:输入输出确定性有限性

++++[输入]:有零个或多个输入

++++[输出]:至少有一个输出

++++[确定性]:组成算法的每条指令清晰,无歧义

++++[有限性]:一个算法在执行有限步骤后必须结束,即计算步骤是有限的

++++描述算法可以由多种方式,如自然语言、流程图、伪代码、程序设计语言;算法设计就是针对具体的问题,设计出良好的算法,使计算机能够解决该问题;同一个问题可以采用不同的算法实现,不同的算法可能时间、空间并不相同,一个算法的优劣可以用空间复杂度与时间复杂度来衡量

++++算法设计中经常采用的排序算法查找算法迭代算法推算法递归算法枚举算法贪心算法回溯算法矩阵算法

++数据

++++立钻哥哥:数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合;数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型

++数据元素

++++立钻哥哥:数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理;也被称为记录

++数据项

++++立钻哥哥:一个数据元素可以由若干个数据项组成;数据项是数据不可分割的最小单位

++数据对象

++++立钻哥哥:数据对象是性质相同的数据元素的集合,是数据的子集

++数据结构

++++立钻哥哥:数据结构是相互之间存在一种或多种特定关系的数据元素的集合;不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构

 

++逻辑结构

++++立钻哥哥:逻辑结构是指数据对象中数据元素之间的相互关系;逻辑结构分为:集合结构、线性结构、树形结构、图形结构等

++物理结构

++++立钻哥哥:物理结构是指数据的逻辑结构在计算机中的存储形式;数据元素的存储结构形式有:顺序存储、链式存储等

++++[顺序存储结构]:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的

++++[链式存储结构]:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的

 

++数据类型

++++立钻哥哥:数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称

 

++抽象数据类型

++++立钻哥哥:抽象数据类型(Abstract Data Type, ADT)是指一个数学模型及定义在该模型上的一组操作;抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性

++++[抽象]:是指抽取出事物具有的普遍性的本质;“抽象”的意义在于数据类型的数学抽象特性

 

++算法(Algorithm)

++++立钻哥哥:算法(Algorithm)是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作

++++算法具有五个基本特性:输入、输出、有穷性、确定性、可行性等

++++[输入输出]:算法具有零个或多个输入;算法至少有一个或多个输出

++++[有穷性]:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成

++++[确定性]:算法的每一步骤都具有确定的含义,不会出现二义性

++++[可行性]:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成

++算法设计的要求

++++立钻哥哥:好的算法应该具有:正确性可读性健壮性高效率低存储量的特征

++++[正确性]:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案

++++[可读性]:算法设计的另一目的是为了便于阅读、理解和交流

++++[健壮性]:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

++++[时间效率高和存储量低]:设计算法应该尽量满足时间效率高和存储量低的需求

 

++算法时间复杂度

++++立钻哥哥:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)n的变化情况并确定T(n)的数量级;算法的时间复杂度,也就是算法的时间量度,记住:T(n)=O(f(n));它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度;其中f(n)是问题规模n的某个函数

++推导大O阶:

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

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

++++3、如果最高阶项存在且不是1,则去除与这个项相乘的常数;得到的结果就是大O

 

++常用的时间复杂度所耗费的时间从小到大依次如下:

++++O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n);

 

++++[O(1)]:常数阶

++++[O(n)]:线性阶

++++[O(n^2)]:平方阶

++++[O(logn)]:对数阶

 

&&Tips:算法的学习,立钻哥哥已经整理出几篇独立博文了,有兴趣的可以查阅以下链接:

++++【C/C++函数与算法】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062527

++++【Unity小游戏算法分析】:https://blog.csdn.net/VRunSoftYanlz/article/details/87908365

++++【设计模式(精华篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++【软件架构设计】分类:https://blog.csdn.net/vrunsoftyanlz/category_9708791.html

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html

++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/

 

 

 

 

 

 

 

 

 

 

#第三篇:数据结构剖析篇

#第三篇:数据结构剖析篇

#第三篇:数据结构剖析篇

++++立钻哥哥:“数据结构”不仅仅只是讲授数据的结构以及在计算机内如何存储和组织数据的方式,它背后真正蕴含的是与之息息相关的算法,精心选择的数据结构配合恰如其分的算法就意味着数据或信息在计算机内被高效率地存储和处理;算法是数据结构的灵魂,它既神秘又“好玩”,简而言之:【数据结构 + 算法 = “聪明人在计算机上的游戏”

++++C1、数据结构基础

++++C2、数组结构

++++C3、链表

++++C4、堆栈

++++C5、队列

++++C6、树

++++C7、图

++++C8、算法

++++C9、立钻哥哥带您软件架构设计

++C1、数据结构基础

++C1、数据结构基础

++C1、数据结构基础

++++立钻哥哥:数据的逻辑结构指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后间关系,而与他们在计算机中的存储位置无关;逻辑结构包括:集合、线性结构、树形结构、图形结构等在计算机科学的发展过程中,数据结构也随之发展;程序设计中常用的数据结构包括:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等

++数据结构与算法

++++立钻哥哥:数据结构(Data Structure)是一门与计算机硬件和软件息息相关的学科,称得上是从计算机问世以来经久不衰的热门学科;这门学科研究的重点是在计算机程序设计领域,即研究如何将计算机中相关数据或信息的组合,以某种方式组织起来进行有效地加工和处理,其中包含算法(Algorithm)、数据存储的结构、排序、查找、树、图及哈希函数等

++++[基本数据类型(Primitive Data Type)]:不能以其他类型来定义的数据类型,或者称为标量数据类型(Scalar Data Type),几乎所有的程序设计语言都会为标量数据类型提供一组基本数据类型,如C#语言中的基本数据类型就包括了整数(int)、浮点(float)、字符(char)等

++++[结构数据类型(Structured Data Type)]:结构数据类型也称为虚拟数据类型(Virtual Data Type),是一种比基本数据类型更高一级的数据类型,如字符串(string)、数组(array)、指针(pointer)、列表(list)、文件(file)等

++++[抽象数据类型(Abstract Data TypeADT)]:我们可以将一种数据类型看成是一种值的集合,以及在这些值上进行的运算及其代表的属性所组成的集合;“抽象数据类型”(Abstract Data Type, ADT)比结构数据类型更高级,是指一个数学模型及定义在此数学模型上的一组数学运算或操作;也就是说,ADT在计算机中是表示一种“信息隐藏”(Information Hiding)的程序设计思想及信息之间的某一种特定的关系模式;例如堆栈(Stack)就是一种典型的数据抽象类型,它具有后进先出(Last In, First Out)的数据操作方式

 

++到处都是算法

++++立钻哥哥:随着信息与网络科技的高速发展,在目前这个物联网(Internet of Things, IOT)与云计算(Cloud Computing)的时代,程序设计能力已经被看成是国力的象征;程序设计已经是接受全民义务制教育的学生们应该具备的基本能力,只有将“创意”通过“设计过程”与计算机相结合,才能让新一代人才轻松应对这个快速变迁的云计算时代

++++[算法(Algorithm)]:算法是计算机科学中程序设计领域的核心理念之一,每个人每天都会用到一些算法;算法也是人类使用计算机解决问题的技巧之一,它不仅用于计算机领域,而且在数学、物理甚至是每天的生活中都应用广泛

++++[大数据(海量数据,big data)]:大数据是指在一定时效(Velocity)内进行大量(Volume)、多样性(Variety)、低价值密度(Value)、真实性(Veracity)数据的获得、分析、处理、保存等操作,主要特征包含:Volume(大量)、Velocity(时效性)、Variety(多样性)、Value(低价值密度)和Veracity(真实性)等;大数据解决了商业智能无法处理的非结构化与半结构化数据

 

++算法性能分析

++++立钻哥哥:对一个程序(或算法)性能的评估,经常是从时间与空间两种因素进行考虑;时间是指程序的运行时间,称为“时间复杂度”(Time Complexity);空间则是该程序在计算机内所占的空间大小,称为“空间复杂度”(Space Complexity

++++[空间复杂度]:所谓“空间复杂度”,是一种以概量方式来衡量所需要的内存空间;而这些所需要的内存空间,通常可以分为“固定空间内存”(包括基本程序代码、常数、变量等)与“变动空间内存”(随程序或进行时而改变大小的使用空间,如引用类型变量);由于计算机硬件的发展及所使用计算机的不同,所以纯粹从程序(或算法)的效率来看,应该以算法的运行时间为主要评估与分析依据

++++[时间复杂度]:程序设计师可以就某个算法的执行步骤计数来衡量运行时间;可以利用一种“概量”的概念来衡量运行时间,我们称之为“时间复杂度”(Time Complexity);在一个完全理想状态下的计算机中,我们定义T(n)来表示程序执行所需花费的时间,其中n代表数据输入量;当然程序的运行时间(Worse Case Executing Time)或最大运行时间是时间复杂度的衡量标准,一般以Big-oh表示;在分析算法的时间复杂度时,往往用函数来表示它的成长率(Rate of Growth),其实时间复杂度是一种“渐近表示法”(Asymptotic Notation

++++[Big-oh]:O(f(n))可视为某算法在计算机中所需运行时间不会超过某一常数倍的f(n),也就是说当某算法的运行时间T(n)的时间复杂度(Time Complexity)为O(f(n))(读成:big-oh of f(n)Order is f(n)

++推导大O阶:

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

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

++++3、如果最高阶项存在且不是1,则去除与这个项相乘的常数;得到的结果就是大O

 

++常用的时间复杂度所耗费的时间从小到大依次如下:

++++O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n);

 

O(1)

常数时间(Constant Time),表示算法的运行时间是一个常数倍;

O(n)

线性时间(Linear Time),表示执行的时间会随着数据集合的大小而线性增长;

O(log2n)

次线性事件(Sub-Linear Time),成长速度比线性时间还慢,而比常数时间还快;

O(n^2)

平方时间(Quadratic Time),算法的运行时间会成二次方的增长;

O(n^3)

立方时间(Cubic Time),算法的运行时间会成三次方的增长;

(2^n)

指数时间(Exponential Time),算法的运行时间会成2的n次方增长;

O(nlog2n)

线性乘对数时间,介于线性和二次方增长的中间模式;

 

++算法设计的要求

++++立钻哥哥:好的算法应该具有:正确性可读性健壮性高效率低存储量的特征

++++[正确性]:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案

++++[可读性]:算法设计的另一目的是为了便于阅读、理解和交流

++++[健壮性]:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

++++[时间效率高和存储量低]:设计算法应该尽量满足时间效率高和存储量低的需求

 

++C2、数组结构

++C2、数组结构

++C2、数组结构

++++立钻哥哥:“线性表(Linear List)”是数学应用在计算机科学中一种十分简单的基本数据机构;线性表的应用在计算机科学领域中是相当广泛的,其中数组结构(Array)就是一种典型线性表的应用;线性表的关系(Relation)可以看成是一种有序对的集合,目的在于表示线性表中的任意两相邻元素之间的关系

++++[静态数据结构(Static Data Structure)]:静态数据结构也称为“密集表(Dense List)”,它使用连续分配的内存空间(Contiguous Allocation)来存储有序表中的数据;静态数据结构是在编译时就给相关的变量分配好内存空间;在建立静态数据结构的初期,必须事先声明最大可能要占用的固定内存空间,因此容易造成内存的浪费,例如数组类型就是一种典型的静态数据结构;优点是设计时相当简单,而且读取与修改表中任意一个元素的时间都是固定的;缺点则是删除或加入数据时,需要移动大量的数据

++++[动态数据结构(Dynamic Data Structure)]:动态数据结构又称为“链表(Linked List)”,它使用不连续的内存空间存储具有线性表特性的数据;优点是数据的插入或删除都相当方便,不需要移动大量数据;另外,因为动态数据结构的内存分配是在程序执行时才进行分配的,所以不需要事先声明,这样能充分节省内存;缺点是在设计数据结构时比较麻烦,而且在查找数据时,也无法像静态数据一样随机读取,必须按顺序找到该数据为止

++数组(Array)

++++立钻哥哥:“数组(Array)”结构其实就是一排紧密相邻的可数内存,并提供了一个能够直接访问单一数据内容的计算方法,这个就是索引,也称为“下标”

++在不同的程序设计语言中,数组结构类型的声明也有所差异,不过通常必须包含以下5种属性:

++++1、起始地址:表示数组名(或数组第一个元素)所在内存中的起始地址

++++2、维度(Dimension):代表此数组为几维数组,如一维数组、二维数组、三维数组等

++++3、索引上下限:指元素在此数组中,内存所存储位置的上标与下标

++++4、数组元素个数:是索引上限与索引下限的差+1

++++5、数组类型:声明此类型的类型,它决定数组元素在内存所占容量的大小

++++立钻哥哥:任何程序设计语言中的数组表示法(Representation of Arrays),只要具备数组上述五种属性以及计算机内存足够的情况下,就容许n维数组的存在;通常数组的使用可以分为一维数组、二维数组和多维数组等等,其基本的工作原理都相同;其实,多维数组也必须在一维的物理内存中来表示,因为内存地址是按线性顺序递增的

++++[一维数组]:C#语言中,一维数组的声明方式:数据类型[] 数据名 = new 数据类型[元素个数];

++++[二维数组(Two-dimension Array)]:二维数组可视为一维数组的扩展,都是用于处理数据类型相同的数据,差别只在于维数的声明

++++[三维数组(Three-dimension Array)]:基本上三维数组的表示法和二维数组一样,都可视为是一维数组的延伸

++++[n维数组]:三维以上的数组归纳为n维数组

++++[多项式]:多项式是数学中相当重要的表达方式,如果使用计算机处理多项式的各种相关运算,那么通常可以用数组(Array)或链表(Linked List)来存储多项式

 

++矩阵(Matrix)

++++立钻哥哥:从数学的角度来看,对于m*n矩阵(Matrix)的形式,可以用计算机中A(m, n)的二维数组来描述;许多矩阵的运算与应用都可以使用计算机中的二维数组来解决

++++[深度学习(Deep Learning, DL)]:是目前人工智能得以快速发展的原因之一,源自于人工神经网络(Artificial Neural Network)模型,并且结合了神经网络架构与大量的运算资源,目的在于让机器建立与模拟人脑进行学习的神经网络,以解读大数据中的图像、声音和文字等多种信息;由于神经网络是将权重存储在矩阵中,矩阵可以是多维,以便考虑各种参数的组合,当然就会牵涉到“矩阵”的大量运算

++++[矩阵相加]:矩阵的相加运算较为简单,前提是相加的两个矩阵对应的行数与列数都必须相等,而相加后矩阵的行数与列数也是相同的

++++[矩阵相乘]:两个矩阵AB的相乘受到某些条件的限制;首先,必须符合A为一个m*n的矩阵,B为一个n*p的矩阵,对A*B之后的结果为一个m*p的矩阵C

++++[转置矩阵]:“转置矩阵”就是把原矩阵的行坐标元素与列坐标元素相互调换

++++[稀疏矩阵]:如果一个矩阵中的大部分元素为零的话,被称为稀疏矩阵;对于稀疏矩阵而言,实际存储的数据项很少,如果在计算机中使用传统的二维数组方式来存储稀疏矩阵,就会非常浪费计算机的内存空间;为提高内存空间利用率的方法就是利用三项式(3-tuple)的数据结构,我们把每一个非零项以(i, j, item-value)来表示,就是假如一个稀疏矩阵有n个非零项,那么可以利用一个A(0:n, 1:3)的二维数组来存储这些非零项,把这种存储的矩阵叫压缩矩阵

++++[上三角形矩阵(Upper Triangular Matrix)]:就是一种对角线以下元素都为0n*n矩阵;其中又可分为右上三角形矩阵(Right Upper Triangular Matrix)与左上三角形矩阵(Left Upper Triangular Matrix);由于上三角矩阵仍有许多元素为0,为了避免浪费内存空间,我们可以把三角形矩阵的二维模式,存储在一维数组中

++++[下三角形矩阵]:与上三角形矩阵相反,下三角形矩阵就是一种对角线以上元素都为0n*n矩阵;也可分为左下三角形矩阵(Left Lower Triangular Matrix)和右下三角形矩阵(Right Lower Triangular Matrix

++++[带状矩阵(Band Matrix)]:是一种在应用上较为特殊且稀少的矩阵,就是在上三角形矩阵中,右上方的元素都为零,在下三角形矩阵中,左下方的元素也为零,即除了第一行与第n行有两个元素外,其余每行都具有三个元素,使得中间主轴附近的值形成类似带状的矩阵

 

++数组应用举例1

++++立钻哥哥:设计一个C#程序,可任意输入mn值,实现一个m*n二维数组的转置矩阵

//立钻哥哥:“转置矩阵”就是把原矩阵的行坐标元素与列坐标元素相互调换

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using static System.Console;    //导入静态类

 

namespace YanlzFrameworkDemo{

    class MyProgram{

        static void Main(string[] args){

            int M, N, row, col;

            String strM;

            String strN;

            String tempStr;

 

            WriteLine(立钻哥哥:请输入[M*N]矩阵的维数);

 

            WriteLine(立钻哥哥:请输入维数M:);

            strM = ReadLine();

            M = int.Parse(strM);

 

            WriteLine(立钻哥哥:请输入维数N:);

            strN = ReadLine();

            N = int.Parse(strN);

 

            int[,] arrA = new int[M, N];

            int[,] arrB = new int[M, N];

 

            WriteLine(立钻哥哥:请输入矩阵内容:);

            for(row=1; row<=M; row++){

                for(col=1; col<=N; col++){

                    Write(a + row + col + =);

                    tempStr = ReadLine();

                    arrA[row-1, col-1] = int.Parse(tempStr);

                }

            }

 

            WriteLine(立钻哥哥:输入矩阵的内容为:\n);

            for(row=1; row<=M; row++){

                for(col=1; col<=N; col++){

                    Write(arrA[(row-1), (col-1)]);

                    Write(\t);

                }

                WriteLine();

            }

 

            //进行矩阵转置的操作

            for(row=1; row<=N; row++){

                for(col=1; col <= M; col++){

                    arrB[(row-1), (col-1)] = arrA[(col-1), (row-1)];

                }

            }

 

            WriteLine(立钻哥哥:转置矩阵内容为:);

            for(row=1; row<=N; row++){

                for(col=1; col<=M; col++){

                    Write(arrB[(row-1), (col-1)]);

                    Write(\t);

                }

                WriteLine();

            }

 

            ReadKey();

 

        }    //立钻哥哥:Static void Main(string[] args){}

    }    //立钻哥哥:Class MyProgram

}    //立钻哥哥:namespace YanlzFrameworkDemo{}

 

 

++数组应用举例2

++++立钻哥哥:利用多项式表示法来设计一个C#程序,并进行两个多项式A(x)=3x^4+7x^3+6x+2B(x)=x^4+5x*3+2x^2+9的加法运算

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using static System.Console;    //导入静态类

 

namespace YanlzFrameworkDemo{

    class MyProgram{

        static int ITEMS = 6;

 

        static void Main(string[] args){

            int[] polyA = { 4, 3, 7, 0, 6, 2 };    //声明多项式A

            int[] polyB = { 4, 1, 5, 2, 0, 9 };    //声明多项式B

 

            Write(立钻哥哥:多项式A=> );

            MyPrintPoly(polyA, ITEMS);    //打印输出多项式A

 

            Write(立钻哥哥:多项式B=> );

            MyPrintPoly(polyB, ITEMS);    //打印输出多项式B

 

            Write(立钻哥哥:A + B => );

            MyPolySum(polyA, polyB);    //多项式A+多项式B

 

            ReadKey();

        }    //立钻哥哥:static void Main(){}

 

        static void MyPrintPoly(int[] Poly, int items){

            int i, MaxExp;

 

            MaxExp = Poly[0];

            for(i=1; i<=Poly[0]+1; i++){

                MaxExp--;

 

                //如果该项式为0就跳过

                if(Poly[i] != 0){

                    if((MaxExp+1) != 0){

                        Write(Poly[i] + X^ + (MaxExp+1));

                    }else{

                        Write(Poly[i]);

                    }

 

                    if(MaxExp >= 0){

                        Write(+);

                    }

                }

            }

 

            WriteLine();

        }    //立钻哥哥:Static void MyPrintPoly(){}

 

        static void MyPolySum(int[] Poly1, int[] Poly2){

            int i;

            int[] result = new int[ITEMS];

 

            result[0] = Poly1[0];

            for(i=1; i<=Poly1[0]+1; i++){

                result[i] = Poly1[i] + Poly2[i];    //等幂次的系数相加

            }

 

            MyPrintPoly(result, ITEMS);

        }    //立钻哥哥:static void MyPolySum(){}

 

    }    //立钻哥哥:class MyProgram{}

}    //立钻哥哥:namespace YanlzFrameworkDemo{}

 

 

 

 

 

 

 

 

++C3、链表

++C3、链表

++C3、链表

++++立钻哥哥:

 

@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

++++【软件架构设计】分类:https://blog.csdn.net/vrunsoftyanlz/category_9708791.html

++++【大话数据结构(C实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104242455

++++【大话数据结构(C#实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104243017

++++【大话设计模式( C# 实现)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104256981

 

++++【游戏框架】:https://blog.csdn.net/VRunSoftYanlz/article/details/80630325

++++【C/C++函数与算法】:https://blog.csdn.net/VRunSoftYanlz/article/details/104026090

++++【设计模式简单整理】:https://blog.csdn.net/VRunSoftYanlz/article/details/79839641

++++【设计模式(精华篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++【C++从入门到放弃】:https://blog.csdn.net/VRunSoftYanlz/article/details/103849127

++++【Linux从入门到放弃】:https://blog.csdn.net/VRunSoftYanlz/article/details/104176967

++++【Python从入门到放弃】:https://blog.csdn.net/VRunSoftYanlz/article/details/101393069

++++【XLua教程】:https://blog.csdn.net/VRunSoftYanlz/article/details/81141502

++++【Unity Shader教程】:https://blog.csdn.net/VRunSoftYanlz/article/details/80372628

++++【SteamVR2.2.0快速入门】:https://blog.csdn.net/VRunSoftYanlz/article/details/88833579

++++【SteamVR实战之PMCore】:https://blog.csdn.net/VRunSoftYanlz/article/details/89463658

++++【Unity企业内训】:https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

++++【Cocos2dx面试题】:https://blog.csdn.net/VRunSoftYanlz/article/details/78630967

++++【Unity面试题】:https://blog.csdn.net/VRunSoftYanlz/article/details/78630687

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html

++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/

 

 

【XR游戏开发QQ群:784477094

++立钻哥哥推荐的拓展学习链接(Link_Url)

立钻哥哥推荐的拓展学习链接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846

++++HTC_VIVE开发基础https://blog.csdn.net/VRunSoftYanlz/article/details/81989970

++++Oculus杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82469850

++++Oculus安装使用https://blog.csdn.net/VRunSoftYanlz/article/details/82718982

++++Unity+SteamVR=>VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88809370

++++Unity减少VR晕眩症https://blog.csdn.net/VRunSoftYanlz/article/details/89115518

++++SteamVR简介https://blog.csdn.net/VRunSoftYanlz/article/details/86484254

++++SteamVR脚本功能分析https://blog.csdn.net/VRunSoftYanlz/article/details/86531480

++++SteamVR2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/86618187

++++SteamVR2.2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/88784527

++++SteamVR2.2.0快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/88833579

++++SteamVR2.2.0交互系统https://blog.csdn.net/VRunSoftYanlz/article/details/89199778

++++SteamVR2.2.0传送机制https://blog.csdn.net/VRunSoftYanlz/article/details/89390866

++++SteamVR2.2.0教程(一)https://blog.csdn.net/VRunSoftYanlz/article/details/89324067

++++SteamVR2.2.0教程(二)https://blog.csdn.net/VRunSoftYanlz/article/details/89894097

++++SteamVR_Skeleton_Poserhttps://blog.csdn.net/VRunSoftYanlz/article/details/89931725

++++SteamVR实战之PMCorehttps://blog.csdn.net/VRunSoftYanlz/article/details/89463658

++++SteamVR/Extrashttps://blog.csdn.net/VRunSoftYanlz/article/details/86584108

++++SteamVR/Inputhttps://blog.csdn.net/VRunSoftYanlz/article/details/86601950

++++OpenXR简介https://blog.csdn.net/VRunSoftYanlz/article/details/85726365

++++VRTK杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82562993

++++VRTK快速入门(杂谈)https://blog.csdn.net/VRunSoftYanlz/article/details/82955267

++++VRTK官方示例(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82955410

++++VRTK代码结构(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82780085

++++VRTK(SceneResources)https://blog.csdn.net/VRunSoftYanlz/article/details/82795400

++++VRTK_ControllerEventshttps://blog.csdn.net/VRunSoftYanlz/article/details/83099512

++++VRTK_InteractTouchhttps://blog.csdn.net/VRunSoftYanlz/article/details/83120220

++++虚拟现实行业应用https://blog.csdn.net/VRunSoftYanlz/article/details/88360157

++++Steam平台上的VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88960085

++++Steam平台热销VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/89007741

++++VR实验:以太网帧的构成https://blog.csdn.net/VRunSoftYanlz/article/details/82598140

++++实验四:存储器扩展实验https://blog.csdn.net/VRunSoftYanlz/article/details/87834434

++++FrameVR示例V0913https://blog.csdn.net/VRunSoftYanlz/article/details/82808498

++++FrameVR示例V1003https://blog.csdn.net/VRunSoftYanlz/article/details/83066516

++++SwitchMachineV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++PlaySceneManagerV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++Unity5.x用户手册https://blog.csdn.net/VRunSoftYanlz/article/details/81712741

++++Unity面试题ABChttps://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++Unity面试题Dhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630838

++++Unity面试题Ehttps://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity面试题Fhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630945

++++Cocos2dx面试题https://blog.csdn.net/VRunSoftYanlz/article/details/78630967

++++禅道[zentao]https://blog.csdn.net/VRunSoftYanlz/article/details/83964057

++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818

++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502

++++Lua快速入门篇(基础概述)https://blog.csdn.net/VRunSoftYanlz/article/details/81041359

++++框架知识点https://blog.csdn.net/VRunSoftYanlz/article/details/80862879

++++游戏框架(UI框架夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80781140

++++游戏框架(初探篇)https://blog.csdn.net/VRunSoftYanlz/article/details/80630325

++++.Net框架设计https://blog.csdn.net/VRunSoftYanlz/article/details/87401225

++++从零开始学架构https://blog.csdn.net/VRunSoftYanlz/article/details/88095895

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++专题:设计模式(精华篇)https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++Unity小游戏算法分析https://blog.csdn.net/VRunSoftYanlz/article/details/87908365

++++Unity案例(Vehicle)https://blog.csdn.net/VRunSoftYanlz/article/details/82355876

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++PowerDesigner简介https://blog.csdn.net/VRunSoftYanlz/article/details/86500084

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++Unity知识点0008https://blog.csdn.net/VRunSoftYanlz/article/details/81153606

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++Unity资源加密https://blog.csdn.net/VRunSoftYanlz/article/details/87644514

++++PhotonServer简介https://blog.csdn.net/VRunSoftYanlz/article/details/86652770

++++编写Photon游戏服务器https://blog.csdn.net/VRunSoftYanlz/article/details/86682935

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++UnityAPI.Rigidbody刚体https://blog.csdn.net/VRunSoftYanlz/article/details/81784053

++++UnityAPI.Material材质https://blog.csdn.net/VRunSoftYanlz/article/details/81814303

++++UnityAPI.Android安卓https://blog.csdn.net/VRunSoftYanlz/article/details/81843193

++++UnityAPI.AndroidJNI安卓JNIhttps://blog.csdn.net/VRunSoftYanlz/article/details/81879345

++++UnityAPI.Transform变换https://blog.csdn.net/VRunSoftYanlz/article/details/81916293

++++UnityAPI.WheelCollider轮碰撞器https://blog.csdn.net/VRunSoftYanlz/article/details/82356217

++++UnityAPI.Resources资源https://blog.csdn.net/VRunSoftYanlz/article/details/83155518

++++JSON数据结构https://blog.csdn.net/VRunSoftYanlz/article/details/82026644

++++CocosStudio快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/82356839

++++Unity企业内训(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

++++Unity企业内训(第1讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82634733

++++Unity企业内训(第2讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82861180

++++Unity企业内训(第3讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82927699

++++Unity企业内训(第4讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83479776

++++Unity企业内训(第5讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83963811

++++Unity企业内训(第6讲)https://blog.csdn.net/VRunSoftYanlz/article/details/84207696

++++钻哥带您了解产品原型https://blog.csdn.net/VRunSoftYanlz/article/details/87303828

++++插件<Obi Rope>https://blog.csdn.net/VRunSoftYanlz/article/details/83963905

++++计算机组成原理(教材篇)https://blog.csdn.net/VRunSoftYanlz/article/details/82719129

++++5G接入:云计算和雾计算https://blog.csdn.net/VRunSoftYanlz/article/details/88372718

++++云计算通俗讲义https://blog.csdn.net/VRunSoftYanlz/article/details/88652803

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

--_--VRunSoft:lovezuanzuan--_--

发布了144 篇原创文章 · 获赞 157 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/VRunSoftYanlz/article/details/104243017
今日推荐