当前位置: 代码迷 >> C# >> 数组的等量代换:冒泡排序
  详细解决方案

数组的等量代换:冒泡排序

热度:352   发布时间:2016-05-05 05:33:41.0
8、C#基础整理(数组和冒泡排序)

数组

概念:定义一组同类型的指定个数的变量,索引从0开始

例:

int[] shuname = new int[10];//定义一组有10个数据的数组shuname[0] = 1;Console.WriteLine(shuname[0]);//打印出1

数组与for循环结合的练习:

1、彩票问题:通过数组录入随机生成的红球。

//定义一个含有6个数据的数组int[] hongqiu = new int[6];Random r = new Random();//随机生成红球的方法for (int i = 0; i < 6; i++){    hongqiu[i] = r.Next(1, 34);    for (int j = 0; j < i; j++)    {        if (hongqiu[i] == hongqiu[j])        {            //判断是否出现重复的红球,若出现就i--再重复循环            i--;            break;        }    }}Console.WriteLine("红球为:");//打印出来红球for (int i = 0; i < 6; i++){    Console.Write("{0} ", hongqiu[i]);}//随机生成一个蓝球int blue;while(true){    blue = r.Next(1,17);    for(int i = 0;i<6;i++)    {        //判断蓝球是否与红球中任意一数重复        if (blue != hongqiu[i])        {            continue;        }        else            break;    }    break;}Console.WriteLine("蓝球为:{0}", blue);

2、遍历数组

for (int i = 0;i<hongqiu.Length;i++){       int h;       h = hongqiu[i];       Console.WriteLine(h);}

hongqiu.Length是数组的元素个数

3、自动遍历数组的方法:foreach

foreach (int p in hongqiu)//p的数据类型需要与数组保持一致{    Console.WriteLine(p);}

数组的等量代换:冒泡排序

1、等量代换的思路:

int a = 0;int b = 1;//要交换a和b,需要一个中间变量cint c = a;a = b;b = c;

2、在数组中通过for循环的运用

思路:用两层for循环嵌套:外层的for循环(从索引为0开始)给 i 一个数组中的值

        内层的for循环(从索引为 i 开始)给 j 一个数组中的值,并与 i 进行循环比较,最后排出想要的顺序。

例:输入五个人的成绩,进行升序的冒泡排序

            int[] shuzu = new int[5];            Console.WriteLine("请输入五个人的成绩:");            for (int i = 0; i < 5; i++)            {                shuzu[i] = int.Parse(Console.ReadLine());            }            for (int i = 0; i < 5; i++)            {                for (int j = i+1; j < 5; j++)                {                    if (shuzu[i] > shuzu[j])                    {                        int zhong = shuzu[j];                        shuzu[j] = shuzu[i];                        shuzu[i] = zhong;                    }                }            }            foreach (int a in shuzu)            {                Console.WriteLine(a);            }