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

逻辑思维--代码实现

写书法:

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

章节复习:

数组:一维,二维,多维

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

定义:数据类型[] 数组名=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("学号\t语文\t数学\t总分");

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

            {

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

               {

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

               }

Console.WriteLine();

           }

        }

C#6 冒泡 折半查找 二维数组的更多相关文章

  1. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  2. C#学习笔记04--排序/查找/二维数组/交叉数组

    一. 冒泡排序(重点) 思路:  每次比较把较小的放在前面, 大的放到后面; 图解:下图是最坏情况下的排序 ` 冒泡排序m个元素, 就有(m-1)趟排序, 第一趟m-1次, 第二趟 m-2次....  ...

  3. [软件工程] 查找二维数组最大子数组的之和 郭莉莉&李亚文

    一. 在主函数中实现二维数组的输入. 代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组, 在循环中算出之和,编写 ...

  4. 【剑指offer】二分查找二维数组

    1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 10 3 3 12 2 3 4 5 6 7 8 9 10 例子输出: Yes No No 时间限制:1 秒 内存限制:3 ...

  5. PHP使用array_filter查找二维数组中符合字段和字段值的数据集合

    1.方法: /** * 获取符合字段和字段值的数组集合 * @param array $data 待过滤数组 * @param string $field 要查找的字段 * @param $value ...

  6. 查找二维数组list[][]中的最大的子数组的和

    之前做过最大一维数组子数组的和的题目,现在将数组扩展成二维: 代码如下: #include<iostream> #define null -858993460 using namespac ...

  7. 《剑指offer》查找二维数组内元素 c++

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. cl ...

  8. PHP 查找二维数组中是否有指定字符串的字段

    Array ( ] => Array ( [content] => 您提交了订单,请等待系统确认 :: [operator] => 客户 ) ] => Array ( [con ...

  9. Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)

    Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)

随机推荐

  1. IE 中创建 子窗口 传值 与接收值 【window.showModalDialog】

    父窗口 创建一个窗口 var backinfo = window.showModalDialog('UserSelect.aspx', '', 'dialogHeight=600px; dialogW ...

  2. 将json的时间格式转换成正常的时间格式

    /** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符 * ...

  3. ios 项目被拒绝各种理由

    . Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound by ...

  4. N - Robot Motion(第二季水)

    Description A robot has been programmed to follow the instructions in its path. Instructions for the ...

  5. crontab指令详解

    引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html 具体指令请参考文章:linux指令. 详细版推荐原 ...

  6. arm str 指令

    str 指令格式: str{条件} 1源寄存器 ,2存储器地址 eg: str r0,[r1],#8;将r0中的数值赋值给r1,然后在r1地址上+立即数8,再写入r1中: str r0,[r1,#8] ...

  7. Matplotlib不显示图形

    安装好了Matplotlib,使用官方一个例子测试运行时,发现使用画图功能时,运行脚本老是显示不出图像,Google了一下,后来发现是matplotlibrc文件没配置好. 参考了官方文档,修改步骤如 ...

  8. android学习—should use @string resource警告

    在布局文件中,文本的设置使用如下写法时会有警告:Hardcoded string "BUTTON", should use @string resource <Button ...

  9. 日志管理-NLog日志框架简写用法

    本文转载:http://www.blogjava.net/qiyadeng/archive/2013/02/27/395799.html 在.net中也有非常多的日志工具,今天介绍下NLog.NLog ...

  10. ruby和Python简单对比

    前不久学了ruby,发现ruby和Python非常像,于是自个测试对比了下,测完了才知道网上有现成的……下面是测试结果   序列(包括列表和元组等)有分片的特点:可能会比较方便的提取其中特定元素,暂时 ...