• C#6 冒泡 折半查找 二维数组


    人类思维--计算机逻辑思维

    逻辑思维--代码实现

    写书法:

    描红——临摹——碑贴——自成一体——草

    章节复习:

    数组:一维,二维,多维

    一维:豆角。连续,同一类型。

    定义:数据类型[] 数组名=new 数据类型[长度]{.,.,.,.};

    赋值:数组名[下标] = 值

    取值:数组名[下标]

    灵活运用:与for循环的结合应用。

    1.求最大值,最小值。

    2.求总和,平均。

    3.随机(生成下标)抽值。

    新课:

    数组的应用:

    (一).冒泡排序。

    1.冒泡排序是用双层循环解决。外层循环的是趟数,里层循环的是次数。

    2.趟数=n-1;次数=n-趟数。

    3.里层循环使用if比较相临的两个数的大小,进行数值交换。

    作业:

    1.先把冒泡排序写一遍。

    2.使用冒泡排序,做青歌赛的打分程序。要求去掉两个最高,两个最低分,求平均得分。

    代码。

    (二).折半查找。

    前提:数组必须是有序的。

    思路:用两个变量分别代表上限(top)和下限(bottom)的下标,再用一个变量代表中间(mid)的下标。

    1.求中间下标:mid = (top+bottom)/2

    2.上限下标下移:top = mid+1. 假设数组是升序排列。

    3.下限下标上移:bottom = mid-1;

    4.循环条件是:bottom>=top

            static void Main(string[] args)

            {

                int[] a = new int[] { 3, 5, 7, 9, 11, 13, 14, 18 };

                Console.Write("请输入要找的数:");

                int find = Convert.ToInt32(Console.ReadLine());

                int top, bottom, mid;  //上限下标,下限下标,中间下标

                top = 0;

                bottom = a.Length - 1;

                while(bottom>=top)  //只要下限下标还在上限下标的下面,就循环,否则没找到就结束。

                {

                    //算中间下标

                    mid = (top + bottom) / 2;

                    //取中间的值

                    int n = a[mid];

                    if(n < find)

                    {

                        top = mid + 1;      //调整上限的下标

                    }

                    else if(n>find)

                    {

                        bottom = mid - 1;// 调整下限的下标。

                    }

                    else

                    {

                        Console.WriteLine("找到了,在第" + mid + "个元素上");

                        break;

                    }

                }

            }

    二维数组:

    表格的模型。

    定义:

    数据类型[,] 数组名 = new 数组类型[维度长度,维度长度];

    int[,] a = new int[3,4];

    int[,] a = new int[3, 4] { { 1, 2, 3, 4 },{ 5, 6, 7, 8 }, { 9, 0, 9, 8 } };

    赋值:

    数组名[下标,下标] = 值;

    a[0,0] = 5;

    a[2,3] = 10;

    取值:

    数组名[下标,下标];

    应用:

    例:这是冒泡排序

    static void ccc(string[] args)

            {

    int[] a = new int[8] { 9, 12, 7, 5, 15, 2, 1, 8 };

    //冒泡排序。

    for(int i=1;i<=a.Length-1;i++) //趟数

                {

    for (int j = 1; j <= a.Length - i; j++)//次数

                    {

    if(a[j-1] > a[j])

                        {

    int t = a[j - 1];

                            a[j - 1] = a[j];

                            a[j] = t;

                        }

                    }

                }

    //显示

    for(int k=0;k<a.Length;k++)

                {

    Console.WriteLine(a[k]);

                }

            }

    例:折半查找

    static void Man(string[] args)

            {

    int[] a = new int[] { 3, 5, 7, 9, 11, 13, 14, 18 };

    Console.Write("请输入要找的数:");

    int find = Convert.ToInt32(Console.ReadLine());

    int top, bottom, mid;  //上限下标,下限下标,中间下标

                top = 0;

                bottom = a.Length - 1;

    while(bottom>=top)  //只要下限下标还在上限下标的下面,就循环,否则没找到就结束。

                {

    //算中间下标

                    mid = (top + bottom) / 2;

    //取中间的值

    int n = a[mid];

    if(n < find)

                    {

                        top = mid + 1;      //调整上限的下标

                    }

    else if(n>find)

                    {

                        bottom = mid - 1;// 调整下限的下标。

                    }

    else

                    {

    Console.WriteLine("找到了,在第" + mid + "个元素上");

    break;

                    }

                }

            }

    例;二维数组

    static void Main (string[] args)

            {   int[,] a = new int[3, 4];

    //输入

    for(int i=0;i<3;i++)

                {

    //自动生成学号

                    a[i, 0] = i+1;

    //语文成绩

    Console.Write("语文:");

                    a[i, 1] = Convert.ToInt32(Console.ReadLine());

    //数学成绩

    Console.Write("数学:");

                    a[i, 2] = Convert.ToInt32(Console.ReadLine());

    //计算总分

                    a[i, 3] = a[i, 1] + a[i, 2];

                }

    //显示

    Console.WriteLine("学号 语文 数学 总分");

    for(int i=0;i<3;i++)

                {

    for(int j=0;j<4;j++)

                   {

    Console.Write(a[i, j] + " ");

                   }

    Console.WriteLine();

               }

            }

  • 相关阅读:
    Tomcat工作原理
    刚刚大学毕业,自己搭网站遇到的问题 一:tomcat中同时部署两个项目的问题
    maven常用命令
    修改redis端口号
    assert的基本用法
    Linux下mysql新建账号及权限设置
    tomcat设置http自动跳转为https访问
    spring mvc 实现文件上传下载
    svn: E155004 is already locked 解决方案
    数据库连接池druid
  • 原文地址:https://www.cnblogs.com/981971554nb/p/4309759.html
Copyright © 2020-2023  润新知