黑马程序员 自学11C#编程基础之复习与冒泡排序
来源:互联网 发布:2016大数据企业排行榜 编辑:程序博客网 时间:2024/06/08 10:41
复习
2014/4/2
Break和if语句配合使用,break是跳出当前所在循环
Continue只能用于循环当中,直接跳出循环,执行下一步:
Do-while while → 直接进入循环条件判断;
For 跳到i++ → 再进入循环条件判断。
变量是不可以重复定义的,是可以重复赋值的(不严谨)
For(int I =0;;;) != int i=0 for()
I 经过循环完毕后就不存在
三元表达式替换if-else
a > b ? a : b
bool True False
表达式1 表达式2 表达式3
枚举/常量/结构
Const 类型 常量名=常量值;
const double PI = 3.14;
枚举:
作用:1.限制用户不能随意赋值,只能用定义枚举时里面的值;
2.不需要记忆每个值,只需选择相应的值。
eg:
enum Gender(新的数据类型)
{
男,
女
}
声明变量: Gender sex;
赋值: sex=Gender.男;(只能选择两种/女)
字符串转换成枚举类型:
Sex=(Gender)(Enum.Parse(typeof(Gender),待转换的字符串));
结构体:
与c语言不同
作用:存储一个人信息的这几个变量之间无关,声明多个时易乱。结构可以只需声明一组变量,有条理地进行赋值。
Public(可访问性不一致,所以在程序中都加/都不加)
public struct Person
{
public (数据类型) stringname;
public Gender sex;(枚举类型)
public int age;
}
……
声明一个数据类型并赋值(结构成员中已定义了变量)
Person onePerson;
onePerson.name=” ”;
onePerson.sex=Gender.男;
onePerson.age= ;
数组:
作用:可帮助我们一次声明多个同类型的变量,这些变量在类型中是连续存储的。
int[] score = new int[5];
数据类型 数据名称 数据类型[数据长度(5个room)]
通过下标/索引来访问数组(内的值): score[0]
int类型数组一旦声明,里面的每一个元素都被初始化成0;
通过数组名.Length 可以获得数组的长度:
eg: score.Length new int[5]=score{0~4}
[]={值个数} → [3]={a,b,c}
Console.WriteLine(moneys[2].Tostring());
将moneys[2]这个存在的值,转换成字符串(.Tostring()任意类型自动转换为字符串)
N个元素进行交换:
“8 4 5 6 9”→“9 6 5 4 8”(不是倒写)
1. 交换int n/2 次。N=xx.Length
2. 在一个循环中,i=0 ,第i个元素与第Length-1-I 个元素进行交换。
最简单的排序方法(冒泡排序):
让数组中的元素两两比较(第i个与第i+1个比较)经过n遍(n = i-1)两两比较,数组中的元素能按照我们预期的规律排序。
若从大到小排序,我们两两比较的时候用“<”
eg:
原始数据:10 20 30 40 50 60 70 要从大到小:
第一趟: 20 30 40 50 60 70 10 七个元素比较一趟要10比较六次(两两比较);
第二趟: 30 40 50 60 7010 20 ………………………20比较五次(实为六次,有一次不必要);
第三趟: 40 50 60 70 1020 30 ………………………30比较四次(实为五次,………………);
第四趟: 50 60 70 10 2030 40 ………………………40比较三次(实为四次,………………);
第五趟: 60 70 10 20 3040 50 ………………………50比较两次(实为三次, ………………);
第六趟: 70 60 10 20 30 40 50 ………………………60比较一次(实为两次,………………);
思路:
也就是说:n个数要排n -1趟
第T趟比较的次数为n— T次:
I = 0 第一趟(i为循环次数)
I = 1 第二趟
I + 1 = T
N个数互相两两比较的总趟数= n—1(T)
一趟走的次数: T=(n — T ) 次 (因为上一趟有比较过的数)
第T趟要走的次数=(n个数—第T趟) 次
=[ n — (i + 1) ]次(加入循环次数的写法)
语法:
趟:for(int I =0;i<number.Length-1;i++)
↑因为有最后一个数(70)不需要跟自己比较,所以少了一趟→number.Length-1
{
次/趟: for(int j=0; j<numbe.Lengthr-1-j; j++)
↑因为第i个数(20)两两比较到最后不需要再跟自己(20)比较也不需要跟上一趟比过的(~20)再比,所以少了自己又少了每趟比较过的数→number.Length-1-j
{
循环体;
}
}
循环体: if( < )( 从大到小是 > )
{
(小的)换(大的)
}
If(number[j]<number[j+1])(从低位比高位)
交换: a=10 b=20
Temp=a;
a=b;
b=Temp;
整体写:
For(int i = 0;i<number.Length-1;i++)
{
For(int n = 0;n<number.Length-1-I;n++)
{
If ( number[j]<number[j+1])
{
Int temp=number[j];
number[j]=number[j+1];
number[j+1]=temp;
}
}
}
for (i = 0; i < number.Length; i++)
{
Console.WriteLine(number[i]);//这个必须写在最后,数组最后的排序确定了才能在最后输出。
}
Console.ReadKey();
练习:
#region 冒泡排序 int[] number = { 10, 20, 80, 50, 60, 30, 40, 50, 20, 10, 80 }; int i = 0; for (i = 0; i < number.Length - 1; i++)//如果不-1就多让最后一个数做最后一趟再跟自己比。 { for (int n = 0; n < number.Length - 1 - i; n++)//如果不-1就让一个数跟自己比一次,不-i就让这个数跟上一次比过的/自己再比一次。 {//number[n]里面必须是n,i是趟数,趟数里面比较的是n,次数,次数里面才能限定循环次数开始每个数的两两比较。 if (number[n] > number[n + 1])//如果两个数不一样,开始调换,左小右大。 { int temp = number[n]; number[n] = number[n + 1]; number[n + 1] = temp; } } //Console.WriteLine(number[i]);犯过的错 } for (i = 0; i < number.Length; i++) { Console.WriteLine(number[i]);//这个必须写在最后,数组最后的排序确定了才能在最后输出。 } Console.ReadKey(); #endregion
- 黑马程序员 自学11C#编程基础之复习与冒泡排序
- 黑马程序员 自学08C#编程基础之循环复习
- 黑马程序员 自学01C#编程基础之基本概念
- 黑马程序员 自学02C#编程基础之变量
- 黑马程序员 自学07C#编程基础之for循环
- 黑马程序员 自学12C#编程基础之方法调用
- 黑马程序员 自学13C#编程基础之返回值
- 黑马程序员 自学16C#编程基础之飞行棋
- 黑马程序员 自学0304C#编程基础之类型的转换与转型
- 黑马程序员 自学05C#编程基础之关系运算符与逻辑运算符
- 黑马程序员 自学14C#编程基础之方法重载与out
- 黑马程序员 自学15C#编程基础之ref与质数
- 黑马程序员-冒泡排序复习
- 黑马程序员 C#之冒泡排序
- 【黑马程序员】C#之冒泡排序
- 黑马程序员 自学06C#编程基础之循环(此文无for循环)
- 黑马程序员 自学09C#编程基础之break continue 枚举
- 黑马程序员 自学10C#编程基础之结构和数组
- 实现Google应用最新的下拉刷新效果
- 轻松教你SQL转ACCESS
- USB,蓝牙,以太网,还是WIFI?
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- matlab中的for循环
- 黑马程序员 自学11C#编程基础之复习与冒泡排序
- iphone 开发文章链接
- PAT Advanced Level 1010
- java序列化
- New的放置语法
- Complex Again
- 页面置换算法总结-FIFO-LRU-OPT
- Java中toString的使用
- 输入一个字符串,打印出该字符串中字符的所有排列