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 sort) ...
CS2L11——复杂数据类型—结构体
CS2L11——复杂数据类型—结构体
结构体
结构体是一种自定义变量类型 类似与枚举可以自定义
结构体是数据和函数的集合,在结构体中可以申明各种变量和方法
作用:用来表现 存在关系的数据 集合 比如用结构体表现 学生 动物 人类 等
结构体声明语法
结构体 一般写在 namespace 语句块中,关键字是 struct
123456struct 自定义结构体名{ 第一部分 变量 第二部分 构造函数 第三部分 函数}
注意!结构体名字 我们的规范 是 帕斯卡命名法
声明一个 Student 结构体,其中可以声明一系列变量、构造函数(方法)、函数(方法)
结构体内部的方法可以调用结构体内部声明的成员变量和成员方法
其中 public 是 访问修饰符,和结构体同名且不写返回值类型的方法 Student() 是构造函数(方法)
结构体内部的成员变量不能直接初始化!!!
变量类型可以写任意类型,包括其他结构体,但是不能是自己的结构体!
结构体内部的方法目前不加 static 关键字,这样才能通过结构体变量调用方法
12345678910111 ...
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){ Console.Write ...
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 + b ...
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 sum;}static v ...
CS2L7——ref和out
CS2L7——ref和out
学习 ref 和 out 的原因
学习 ref 和 out 的原因,它们可以解决 在函数内部传入的内容 里面变了 外面没变 的问题
首先需要知道两个概念:形参和实参
形式参数(形参):在函数定义中声明的参数
实际参数(实参):在函数调用时传递给函数的具体值或表达式
123456789101112static void ChangeValue(int value){ //这里的value是形参 value = 3;}static void Main(string[] args){ int a = 1; //这里的a是实参 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); }; } action();}
上题中的代码,如果我们希望打印出0~9,应该如何修改代码?
Unity
Unity中如何将本地坐标转为世界坐标?
Unity中如何计算出两个向量之间的夹角,请说出两种方式
请写出UGUI中 ...
MIL7——模拟面试题
MIL7——模拟面试题
问题
C#
C# 中如何让一个类不能再被其他类所继承?
C# 中使用泛型的好处是什么?
C# 中元组对于我们的作用是什么?
请说明 Thread、ThreadPool、Task 分别是什么?并简单说明彼此的区别
请简述GC(垃圾回收)产生的原因,并至少说出避免GC发生的三种方式?
Unity
Unity中动态加载资源的方式有哪些?
Unity中的光照贴图的作用是什么?
Unity场景中有两个点连成了一条线,想要旋转这条线,应该怎么做?
LOD(多细节层次)和 MipMap(纹理图)的作用是什么?
游戏开发中,客户端和服务端交互数据,程序中常用方式是什么?
答案
C#
C# 中如何让一个类不能再被其他类所继承?
使用密封关键字 sealed 修饰该类
C# 中使用泛型的好处是什么?
可以为不同类型对象的相同行为进行通用处理,提升代码复用率
避免装箱拆箱,提升性能
C# 中元组对于我们的作用是什么?
答案: 可以在不用写数据结构类的情况下,利用元组处理多返回值,或者临时数据的集合
请说明 Thread、ThreadPool、T ...
MIL6——模拟面试题
MIL6——模拟面试题
问题
C#
C# 中如何让自定义容器类能够使用 for 循环遍历?(通过 类对象[索引] 的形式遍历)
C# 中如何让自定义容器类能够使用 foreach 循环遍历?
C# 中接口的作用是什么?说说你的理解
Unity引擎中哪些功能使用了 C# 的反射功能?至少说出一点
请问以下这三行代码,运行后,在堆上会分配几个“房间”
123456static void Main(string[] args){ string str = "123"; string str2 = "123"; string str3 = "1234";}
Unity
Unity中 Awake 和 Start 两个生命周期函数,分别在什么时候被调用?
Unity场景上有多个对象,都分别挂载了n个脚本。 我们如何控制不同脚本间生命周期函数 Awake 的执行先后顺序?
想要在Unity中使用指针我们需要进行哪些操作?
Unity中的协同程序中 y ...