CS2L13——选择排序
CS2L13——选择排序 选择排序 选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。 设数组的长度为 nnn,选择排序的步骤为: 初始状态下,所有元素未排序,即未排序(索引)区间为 [0,n−1][0,n−1][0,n−1] 。 选取区间 [0,n−1][0,n−1][0,n−1] 中的最小元素,将其与索引 0 处的元素交换。完成后,数组前 1 个元素已排序。 选取区间 [1,n−1][1,n−1][1,n−1] 中的最小元素,将其与索引 1 处的元素交换。完成后,数组前 2 个元素已排序。 以此类推。经过 n−1n−1n−1 轮选择与交换后,数组前 n−1n−1n−1 个元素已排序。 仅剩的一个元素必定是最大元素,无须排序,因此数组排序完成。 步骤简记为:新建中间变量、依次比较、找出极值(最大或最小)、放入目标位置、比较 n 轮 选择排序的实现 123456789101112131415161718192021222324252627282930313233343536static...
CS2L12——冒泡排序
CS2L12——冒泡排序 排序的基本概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列 常用的排序例子: 18 7 1 5 4 2 6 3 9 把上面的这个无序排列 变为 有序(升序或者降序)的序列的过程 升序:从小到大,呈上升趋势 降序:从大到小,呈下降趋势 121 2 3 4 5 6 7 8 9 (升序)9 8 7 6 5 4 3 2 1 (降序) 在程序中 序列一般 存储在数组当中,所以 排序往往是对 数组内的元素 进行排序,把数组里面的内容变为有序的 1int[] arr = new int[] { 8, 7, 1, 5, 4, 2, 6, 3, 9 }; 排序算法的概念 排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。 排序算法有着广泛的应用,因为有序数据通常能够被更高效地查找、分析和处理。 排序算法中的数据类型可以是整数、浮点数、字符或字符串等。 排序的判断规则可根据需求设定,如数字大小、字符 ASCII 码顺序或自定义规则。 冒泡排序 冒泡排序(bubble...
CS2L11——复杂数据类型—结构体
CS2L11——复杂数据类型—结构体 结构体 结构体是一种自定义变量类型 类似与枚举可以自定义 结构体是数据和函数的集合,在结构体中可以申明各种变量和方法 作用:用来表现 存在关系的数据 集合 比如用结构体表现 学生 动物 人类 等 结构体声明语法 结构体 一般写在 namespace 语句块中,关键字是 struct 123456struct 自定义结构体名{ 第一部分 变量 第二部分 构造函数 第三部分 函数} 注意!结构体名字 我们的规范 是 帕斯卡命名法 声明一个 Student 结构体,其中可以声明一系列变量、构造函数(方法)、函数(方法) 结构体内部的方法可以调用结构体内部声明的成员变量和成员方法 其中 public 是 访问修饰符,和结构体同名且不写返回值类型的方法 Student() 是构造函数(方法) 结构体内部的成员变量不能直接初始化!!! 变量类型可以写任意类型,包括其他结构体,但是不能是自己的结构体! 结构体内部的方法目前不加 static...
CS2L10——递归函数
CS2L10——递归函数 递归 所谓递归,就是让函数自己调用自己 注意,错误的递归函数(或者说没有终止条件的递归)会无限递归导致爆栈! 123456789static void Fun(){ Fun();}static void Main(string[] args){ Fun();} 报错: 123456Stack overflow.Repeat 24088 times:-------------------------------- at lesson11递归函数.Program.Fun()-------------------------------- at lesson11递归函数.Program.Main(System.String[]) 一个正确的递归函数,必须要有结束调用的条件! 用于条件判断的 这个条件 必须改变 能够达到停止的目的 例如,用递归函数打印出 0 到 10 123456789101112131415static void Fun(int a){ ...
CS2L9——函数重载
CS2L9——函数重载 函数重载 在同一语句块(class 或者 struct)中 拥有一组名字相同,但是参数的数量不同 或者 参数的数量相同但参数的类型或者顺序不同的函数(方法) 作用:命名一组功能相似的函数 减少函数名的变量 避免命名空间的污染,提升代码可读性 注意!重载与返回值类型无关,只和 参数类型 个数 顺序相关 调用时 程序会自己根据传入的参数类型判断使用哪一个重载 可选参数不能重载!!! 同一个语句块中函数名相同,参数数量、类型、顺序不同的函数,我们就称为重载函数,注意!与返回值无关 作用:一般用来处理不同参数的同一类型的逻辑处理 例如下面的相加计算重载函数: 123456789101112131415161718192021222324252627282930313233343536373839404142static int CalcSum(int a, int b){ return a + b;}//参数数量不同static int CalcSum(int a, int b, int c){ return a...
CS2L8——变长参数和参数默认值
CS2L8——变长参数和参数默认值 变长参数 在遇到 函数传入的参数个数 无法确定 时,需要灵活控制传入参数个数时,即可使用变长参数 params 假设一个函数要计算 n 个整数的和,我们就可以使用 params 变长参数修饰一个 int[] 参数 params int[] 意味着可以传入 n 个 int 参数,n 可以等于 0,传入的参数会存在 arr 数组中 注意: params 关键字后面必为一维数组,数组的类型可以是任意的 函数参数可以有别的参数和 params 关键字修饰的函数 函数参数中只能最多出现一个 params 关键字 并且一定是最后一组参数 前面可以有 n 个其他参数 123456789101112131415static int Sum(params int[] arr){ int sum = 0; for (int i = 0; i < arr.Length; i++) { sum += arr[i]; } return...
CS2L7——ref和out
CS2L7——ref和out 学习 ref 和 out 的原因 学习 ref 和 out 的原因,它们可以解决 在函数内部传入的内容 里面变了 外面没变 的问题 首先需要知道两个概念:形参和实参 形式参数(形参):在函数定义中声明的参数 实际参数(实参):在函数调用时传递给函数的具体值或表达式 12345678910static void ChangeValue(int num) //这里的num是形参{ num = 3;}static void Main(string[] args){ int a = 1; ChangeValue(a); ...
MIL9——模拟面试题
MIL9——模拟面试题 问题 Lua 请说出Lua中常用的数据类型(至少说出6种) Lua中 pairs 和 ipairs 的区别 Lua中常用的元方法有哪些?至少说出3个元方法 Lua中元表的作用 Lua中 __index 和 __newindex 有什么作用 Unity Unity 中判断两个2D矩形是否相交,有几种方式?(请至少说出两种方式) Unity 中想要制作角色的连招功能,在制作状态机时我们一般如何处理? Unity 中如果想要在动作的某一时刻进行伤害检测,我们应该怎么做?(请说出两种做法) Unity 中想要制作自动寻路逻辑,我们应该怎么做?(请至少说出两种做法) 游戏编辑器(比如 角色编辑器、关卡编辑器、地图编辑器等工具)的本质是什么? 答案 Lua 请说出Lua中常用的数据类型(至少说出6种) 答案: nil boolean number string table function userdata thread Lua中 pairs 和 ipairs 的区别 答案: pairs...
MIL8——模拟面试题
MIL8——模拟面试题 问题 C# 如果我们想为 Unity 中的 Transform 类添加一个自定义的方法,应该如何处理? 请说出 using 关键字的两个作用 C# 中 Dictionary 不支持相同键存储 如果想要一个键对应多个值如何处理? 请问下面代码的最终打印结果是什么?为什么? 123456789101112static void Main(string[] args){ Action action = null; for (int i = 10; i < 10; i++) { action += () => { Console.WriteLine(i); }; } ...
MIL7——模拟面试题
MIL7——模拟面试题 问题 C# C# 中如何让一个类不能再被其他类所继承? C# 中使用泛型的好处是什么? C# 中元组对于我们的作用是什么? 请说明 Thread、ThreadPool、Task 分别是什么?并简单说明彼此的区别 请简述GC(垃圾回收)产生的原因,并至少说出避免GC发生的三种方式? Unity Unity中动态加载资源的方式有哪些? Unity中的光照贴图的作用是什么? Unity场景中有两个点连成了一条线,想要旋转这条线,应该怎么做? LOD(多细节层次)和 MipMap(纹理图)的作用是什么? 游戏开发中,客户端和服务端交互数据,程序中常用方式是什么? 答案 C# C# 中如何让一个类不能再被其他类所继承? 使用密封关键字 sealed 修饰该类 C# 中使用泛型的好处是什么? 可以为不同类型对象的相同行为进行通用处理,提升代码复用率 避免装箱拆箱,提升性能 C# 中元组对于我们的作用是什么? 答案: 可以在不用写数据结构类的情况下,利用元组处理多返回值,或者临时数据的集合 请说明...