Algorithm_03--C#排序算法(选择排序)
选择算法本质:
1、找到数组中最小的元素
2、将其放在第一位
3、找到数组第二小的元素
4、将其放在第二位
5、以此类推,直到整个数组排序
首先先定义数组和一个数组下标
设定一个smallest下表。然后for循环从剩下的数据中寻找最小数 j = i +1 ;
比较两个项的数大小,然后交换下标。
再交换两个数组的值
问题:
为什么这里Swap交换方法要使用ref关键字传入参数?
在这个排序算法中,我们使用ref关键字是为了实现值的交换,也就是交换两个整数变量的值。如果不使用ref时候,我们交换的方法是这样的:
调用此方法时,实际上是传递a和b的值进去,在方法内部对形式参数a和b并不会影响实际参数的值,所以当方法返回后,实际参数的值不会发生变化,达不到交换值得目的。
使用ref我们交换方法为:
调用此方法时,传递a和b的引用进去,在方法内对形参a和b的赋值会影响到实际参数的值,所以当方法返回后,实际参数也随之改变,达到交换值的目的。
所以,在选择算法中使用ref关键字的目的是为了实现两个整数变量实际值的交换,如果不使用ref,我们将无法达到交换值得目的,排序算法也无法正常工作。
延申:
ref关键字定义:
-作为方法参数,表示该参数按引用传递
-作为方法返回值,表示该方法返回一个对对象的引用
-用于定义引用类型的别名
-用于定义值类型的别名,实现值类型的引用语义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!