C#学习笔记 06.01
(学习视频来自bilibili的传智播客赵老师基础教学视频)
排序
冒泡排序(一个经典方法)
方法上讲,就是比较两个相邻的,如果大小关系不是升序就交换,这样一来,每循环一次,就会有一个最大的数被排在最后,从而在循环结束的时候实现升序排序的目的。
static void Main(string[] args)
{
int temp;
int[] a = { 15, 5, 8, 4, 2, 3, 5, 7 };
for (int i = 0; i < a.Length-1; i++)
{
for (int j = 0; j < a.Length-i-1; j++)
{
if (a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
Console.ReadKey();
现成的排序方法
但是实际用的时候肯定是不用这么麻烦的,有一个大佬们写好了的函数(方法)
Array.Sort(数组)将一个数组升序排列
Array.Reverse(数组)将一个数组降序排列
所以想降序排列可以先升序再反转。
方法
当一个功能需要多次实现的时候,我们就可以考虑用方法实现,当需要的时候直接调用即可。
public static 返回值类型 方法名(参数)
public 表示是公开的
static 表示是静态的
如果没有返回值,那么返回值类型是 void
方法可以不需要参数,但是括号是一定要有的
当我们不知道一个方法怎么用的时候就别打全了,提示的左上角是返回值,括号中是参数。
return
在方法中进行返回值,也可以立即结束当前方法(这也很好理解,都返回值了,这个方法也就结束了)
全局变量(静态字段)
如果我们在写下方法的类中声明了静态字段,那么这个字段将可以被该类下的所用方法使用。
注意事项
- 方法功能一定要单一
- 在方法中尽量避免出现提示用户输入的代码
因为方法要有一定的通用性,在保证通用性的同时,需要牺牲一些多样性。。。大概酱。。。
out参数
因为 return 这个只能返回一个返回值,out参数就是用来返回多个值用的。
声明方法的时候,在参数列表中加 out 关键字修饰的变量,被 out 修饰的变量就是方法的返回值。
上例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _11_FangFa
{
class Program
{
static void Main(string[] args)
{
int[] nums = { 1, 5, 44, 6, 7, 7, 5, 4, 635, 4, 5, 48 };
int max, min, sum;
double pingjun;
GetTeZhengZhi(nums,out max,out min,out sum,out pingjun);
//值得注意的是,我们在调用方法的时候也需要加 out 来修饰变量。
Console.WriteLine("数组最大值是{0},最小值是{1},和是{2},平均值是{3}", max, min, sum, pingjun);
Console.ReadKey();
}
public static void GetTeZhengZhi(int[] nums,out int max,out int min,out int sum,out double pingJun)
{
min = nums[0];
max = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
max = max < nums[i] ? nums[i] : max;
min = min > nums[i] ? nums[i] : min;
sum += nums[i];
}
pingJun = ((double)sum) / nums.Length;
//这里之所以需要显式转换是因为两个int相除默认结果是int,会丢精度的。。。
}
}
}