一、普通冒泡排序:
C#中常见的排序方法有:冒泡排序,快速排序,插入排序,选择排序、堆排序以及归并排序。虽然还没学习过,但是也有耳闻,就先把它们先归类。今天主要讲这里面最常见的冒泡排序。
【概念】
冒泡排序也就是讲一组需要排序的数,进行从小到大,或从大到小的排列。计算机的排序没有人那么灵活,冒泡排序突出的是顺序;
//数组的排序-冒泡排序
int[] nums = new int[] { 64, 45, 252, 643, 32, 12 };
int temp = 0;
for (int j = 0; j < nums.Length - 1; j++)
{
for (int i = 0; i < nums.Length - 1 - j; i++)
{
if (nums[i] > nums[i + 1])
{
temp = nums[i];
nums[i] = nums[i + 1];
nums[i + 1] = temp;
}
}
}
for (int i = 0; i < nums.Length; i++)
{
Console.Write(nums[i] + "\t");
}
Console.ReadKey();
知识点:
Array.Sort(nums); //排序
Array.Reverse(nums); // 这个方法是反转,可以将你列出的数字或者其他按倒着的顺序写一遍。
Array类可一行代码解决排序;
代码:
int[] nums = new int[] { 3, 523, 33, 364, 67 };
Array.Sort(nums);
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine(nums[i] + "\t");
}
Console.ReadKey();
二、隐式转换和显式转换
1.隐式转换
基本概念
当两个不同类型的操作数进行运算时,编译器会试图对其进行自动类型转换,使两者变为同一类型。不同的数据类型具有不同的肤质空间,如果试图将一个需要较大赋值为空间的数据转换为赋值空间较小的数据,就会出现错误。
隐式转换一般在不同类型的数据进行混合运算时发生,由c#语言编译器自动完成。
隐式转换遵循以下规则
1.如果参与运算的数据类型不相同,则先转换成同一类型,然后进行运算。
2.转换时按数据长度增加的方向进行,以保证精度不降低,如Int型和Long型数据进行运算时,先把int型数据转换成long型后,再进行运算。
3 .所有浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再进行运算。
4.byte型和short型数据参与运算时,必须先转换成int型。
5.char型可以隐式转化为ushort.、int、uint、long、ulong、float、double或decinmal型,但是不存在从其他类型到char型的隐式转换。
static void Main(string[] args)
{
double m;
int n = 10;
m = n;
Console.WriteLine("m="+n);
Console.ReadKey();
}
上述代码中定义了一个double型(高类型)变量m和int型(低类型)变量n。如下代码将赋值给m,由于类型不同,系统自动实现了隐式转换。运行结果如果: m=10
2.显示转换
基本概念
在c#中,为了避免隐式转换可能带来的错误,需要使用强制转换来执行显示转换,强制类型转换的一般形式如下:
//(float) a 把a转换为float 类型 //(int)(x+y) 把x+y转换为int类型
c#允许用System.Convert类提供的类型转换方法来转换数据类型,常用的转换方法有ToBoolean、ToByte、ToChar、ToInt32、ToSingle、ToString等。
举例
static void Main(string[] args)
{
double m = 5;
int n;
n = convert.ToInt32(m); //使用函数进行类型转换
Console.WriteLine("n="+n);
Console.ReadKey();
}
三、函数:
函数的语法:
【访问修饰符】 static 返回值 方法名(【参数列表】) 看见static就是静态方法
{
方法体
}
举例解释函数语法:
Public static int Show()
Public:访问修饰符
Int:返回值类型,此时为整型
Show:自己定义的方法名,方法名开头要大写
命名规则:方法名开头要大写,参数名开头小写,参数名和变量名要有意义。
return:立即退出方法
我们知道函是有参数或者返回值的,那么可以有这样的集中类型:
1.有参数,有返回值:Convert.ToInt32(Object Value)
2. 无参数,有返回值:Console.ReadLine(); 返回值类型为string
3.无参数,无返回值: Console.WriteLine();
无返回值无参数-方法:
static void Main(string[] args)
{
Show();
Console.ReadKey();
}
public static void Show() //这个方法和Main属于同一级别的,注意写这个方法的位置
{
Console.WriteLine("请输入第一个数");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数");
int num2 = Convert.ToInt32(Console.ReadLine());
int number = num1 > num2 ? num1 : num2;//相当于if-else函数,如果num1>num2则显示num1否则显示num2
Console.WriteLine("最大值为{0}", number);
}