黑马程序员 自学11C#编程基础之复习与冒泡排序

来源:互联网 发布:2016大数据企业排行榜 编辑:程序博客网 时间:2024/06/08 10:41
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------


复习

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个数互相两两比较的总趟数= n1(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



------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
0 0
原创粉丝点击