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关键字定义:

-作为方法参数,表示该参数按引用传递

-作为方法返回值,表示该方法返回一个对对象的引用

-用于定义引用类型的别名

-用于定义值类型的别名,实现值类型的引用语义

posted @ 2023-06-06 10:11  压力小子の抗压日记  阅读(7)  评论(0编辑  收藏  举报