冒泡排序
假设排序n个数:则比较n-1轮(用for),
再用一个for
第一轮比较:n-1次:
step1:第一个数和第二个比,如果第一个比第二个小,第一个和第二个交换位置,
step2:第二个再和第三个比较,如果第二个比第三个小,第二个和第三个交换位置
....
第一轮比较n-1后,数组最后一个为最小值
第二轮比较:n-2次
step1:第一个数和第二个比,如果第一个比第二个小,第一个和第二个交换位置,
step2:第二个再和第三个比较,如果第二个比第三个小,第二个和第三个交换位置
....
第一轮比较n-2后,数组最后一个为最小值,倒数第二个为仅次于数组倒数第一个小的数;因为最后一个已经和其它的都比较过,所以不用再和倒数第二个比较,因此第二轮比较了n-2次;
以此类推
第三轮比较:n-3次
第四轮比较:n-4次
代码:
//冒泡排序 Console.WriteLine("请输入数组长度");//提示用户输入数组的长度 int[] num = new int[int.Parse(Console.ReadLine())];//根据数组的长度初始化数组 int i = 0; //让用户输入数组的成员 while (i < num.Length) { Console.WriteLine("请输入数组成员:"); if (int.TryParse(Console.ReadLine(), out num[i]))//判断用户输入的是否为数字 { i++; } else { Console.WriteLine("你输入的有误"); } } for (int j = 0; j < num.Length - 1; j++)//控制比较的轮数 { for (int k = 0; k < num.Length - 1 - j; k++)//控制每轮比较的次数 { int temp; if (num[k] < num[k + 1])//两个数比较谁大,大的往前移,和小的交换位置 { temp = num[k]; num[k] = num[k + 1]; num[k + 1] = temp; } } } for (int k = 0; k < num.Length; k++) { Console.WriteLine(num[k]); }
枚举:一般用于固定的数量,比如季节,方向,用的时候,枚举名.成员
语法:
[访问修饰符] enum 枚举名
{
成员1,
成员2
}
例子如下:
// 定义枚举方向QQ登录状态 public enum QQstatus { 在线, 隐身, 登录, 在线, } public enum Direction { east, west, north, south }
结构:可以一次声明多个变量
语法:
[访问修饰符] struct 结构名
{
结构成员
[访问修饰符] 数据类型名 变量名;
}
例子:声明一个person的结构体,有三个成员
public struct peason { public string _name; public char _sex; public Direction _dir; }
方法:函数就是讲一堆代码进行重用的机制,一些方法就完成一个功能,用法在主函数中用类名.方法名();如果在本类中使用则可以省略类名
语法:
[访问修饰符] static 返回值类型 方法名([参数列表])
{
方法体;
}
有static的方法为静态方法
注意:
方法名开头大写,参数名开头小写,方法参数名要有意义
局部变量 作用域只在当前的语句块中
全局变量 整个代码都可以访问
返回值 return 有返回值时 return +值;
例子如下:
int num1 = 10, num2 = 20; int sum = Add(num1, num2);//调用Add方法 Console.WriteLine(sum); Console.ReadKey(); } /// <summary> /// 计算两个数的和 /// </summary> /// <param name="number1">参数1</param> /// <param name="number2">参数2</param> /// <returns></returns> public static int Add(int number1, int number2) { return number1 + number2; }
声明数组的四种方法:
int [] numbers=new int [3];
int[] numbers=new int []{1,2,3};
int[] numbers=new int[3]{1,2,3};
int[] numbers={1,2,3};