一维数组

冒泡排序

二维数组

Length:取数组元素的总个数
GetLength:取不同维度的个数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace m1w2d5_array_rank
{
class Program
{
static void Main(string[] args)
{
#region 冒泡排序
//数组 冒泡排序
Random roll = new Random();
int[] array = { , , , , , , , , , };
for (int i = ; i < array.Length; i++)
{
array[i] = roll.Next(, );
}
foreach (var item in array)
{
Console.Write(item + ",");
}
//子问题:指定一个区间,我可以把最大的放后面
//子问题的子问题:从头到尾遍历(除最后一个位置),相邻位置对比,如果大,就排后面
for (int i = ; i < array.Length - ; i++)
{
for (int j = ; j < array.Length - - i; j++)
{
if (array[j] > array[j + ])
{
int temp = array[j];
array[j] = array[j + ];
array[j + ] = temp;
}
}
}
//枚举器:可以帮我们快速遍历,使用这样的遍历方式,我们不用关心遍历的算法
//有一定的内存消耗
//如果他的成员是值类型不可以改,但是可以访问,但是可以改成员的成员,前提是成员是引用类型
Console.WriteLine();
foreach (var item in array)
{
Console.Write(item + ",");
}
//1、先写内循环,循环次数为:数组长度-1-外循环当前次数
//2、内循环每次对比当前位置与下一位置,如果逻辑(当前位大于对比位)达成 则交换位置
//3、外循环,循环次数为 数组长度-1
#endregion
#region 二维数组
二维数组也是解决重复数据的重复逻辑,不同的是他允许我们通过两(多)个下标
为什么用多个下标,人们在生活,经常需要处理二维的数据,地图,表单(纯三维数据特别的少)
本质上,内存中一维和二维数组是一样的
使用二维数组
定义二维数组
不指定元素
数据类型[,] 变量名;
指定元素
数据类型[,] 变量名 = new 数据类型[标号为0维度的元素个数, 标号为1维度的元素个数]
数据类型[,] 变量名 = new 数据类型[行数, 列数]
数据类型[,] 变量名 = new 数据类型[x, y]
遍历
遍历二维数组我们需要有两个循环,每个循环处理不同维度
#endregion
#region 二维数组的练习
//将1到24赋值给一个二维数组(4行6列)
int[,] array = new int[, ];
int num = ;
//赋值正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
array[i, j] = num++;
}
}
//显示正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.Write(array[i, j] + " "); //Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
//将二维数组(5行5列)的右上半部分置零.
int[,] array = new int[, ];
int num = ;
//赋值正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
array[i, j] = num++;
if (i < j)
{
array[i, j] = ;
}
}
}
//显示正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
////求二维数组(3行3列)的对角线元素的和.
//00 01 02
//10 11 12
//20 21 22
int[,] array = new int[, ];
int num = ;
int sum = ;
//赋值正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
array[i, j] = num++;
}
}
//i = j
//i + j =array.GetLength(0)-1
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
if (i == j || i + j == )
{
sum += array[i, j];
}
}
}
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
Console.WriteLine(sum);
////求二维数组(5行5列)中最大元素值及其行列号。(随机1~500)
Random roll = new Random();
int[,] array = new int[, ];
int max = ;
int x = ;
int y = ;
//赋值正确
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
array[i, j] = roll.Next(, );
if (array[i, j] > max)
{
max = array[i, j];
x = i;
y = j;
}
}
}
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
Console.WriteLine("最大数为{0},行号为{1},列号位{2}", max, x + , y + );
//从键盘上输入9个整数,保存在二维数组中按方阵的形式输出
int[,] array = new int[, ];
int num = ;
//赋值正确
Console.WriteLine("请输入10个整数");
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.WriteLine("请输入第{0}整数", num);
num++;
array[i, j] = int.Parse(Console.ReadLine());
}
}
for (int i = ; i < array.GetLength(); i++)
{
for (int j = ; j < array.GetLength(); j++)
{
Console.Write(array[i, j] + "\t");
}
Console.WriteLine();
}
#endregion
#region 交错数组
//交错数组与多维数组的区别
//交错数组理论上才是数组的数组
//1、多维数组必须是每一个维度的元素个数相等,多维数组只能表示矩形数据块
//交错数组可以表示锯齿数据块
//2、多维数组必须是指定每一个维度的元素个数
//交错数组只能指定最外层的数组个数
//3、多维本质上是一块连续内存空间,为什么是多维表示,为了人们方便去理解,多维和一维只是索引器不一样
//交错数组理论上才是数组的数组
//定义一个交错数组
//数据类型[][]变量名;
//数据类型[][]变量名 = new 数据类型[4][]{new int[10],new int[5],new int[10],new int[5],}
//数据类型[][]变量名 = new 数据类型[4][];
int[][] array = new int[][] { new int[] { , , , }, new int[] { , } };
//foreach (var item in array)
//{
// for (int i = 0; i < item.Length; i++)
// {
// Console.Write(item[i] + "\t");
// }
// Console.WriteLine();
//}
foreach (var item in array)
{
foreach (var subitem in item)
{
Console.Write(subitem + "\t");
}
Console.WriteLine();
}
#endregion
}
}
}

复习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//&&和&的区别
int a = ;
int b = ;
bool c = a > && a / b > ;
Console.WriteLine(c);//结果false,只判断一遍
bool d = a > & a / b > ;
Console.WriteLine(d);//结果报错,位运算符两边都会判断
float cost = ;
float _cost = cost < ? : * 0.8f;
string name = "老王";
name = name == "老王" ? "老王" : "流氓"; //90 A 90-100
//80 B
//70 C
//60 D
//E
Random r = new Random();
int score = r.Next();
switch (score / )
{
case : //常量标号 字面值
case :
Console.WriteLine("A");
break;
case :
Console.WriteLine("B");
break;
case :
Console.WriteLine("C");
break;
case :
Console.WriteLine("D");
break;
default:
Console.WriteLine("E");
break;
} //0-10之间的偶数
int num = ;
while (true)
{
if (num == )
{
num++;
continue;
}
if (num % == )
{
Console.WriteLine(num);
}
num++;
if (num > )
{
break;
}
} //数组
int[] num1 = { , , };//静态数组,内存连续,大量读写效率高,长度不能动态增加,线性,内存连续
int[,] num2 = { { , , }, { , , } };
num2[, ] = ;
for (int i = ; i < num2.GetLength(); i++)
{
for (int j = ; j < num2.GetLength(); j++)
{
Console.WriteLine(num2[i,j] +"\t");
}
Console.WriteLine();
} //标志枚举
EGameState status = EGameState.菜单状态; //0菜单状态,1战斗状态,2结束
switch (status)
{
case EGameState.菜单状态:
Console.WriteLine("1.开始游戏 2.结束游戏");
char input = Console.ReadKey().KeyChar;
if (input == ) { }
else if (input == ) { }
else { }
break;
case EGameState.游戏状态:
break;
case EGameState.结束状态:
break;
default:
break;
} ERollBuff buff = ERollBuff.None;
buff = ERollBuff.中毒 | ERollBuff.减速 | ERollBuff.燃烧;
if ((int)(buff & ERollBuff.中毒) != ) { }//角色中毒
if ((int)(buff & ERollBuff.减速) != ) { }//角色减速
if ((int)(buff & ERollBuff.燃烧) != ) { }
}
}
enum EGameState
{
菜单状态,//
游戏状态,//
结束状态,//
游戏简介 //
}
enum ERollBuff
{
None = , //
减速 = , //
衰弱 = , //0010 1<<1 枚举项多,可以用位左移
中毒 = , //0100 1<<2
燃烧 = //1000 1<<3
}
}

C#学习笔记(八):多维数组的更多相关文章

  1. matlab学习笔记11_1低维数组操作

    一起来学matlab-matlab学习笔记11 11_1 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab ...

  2. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  3. Python学习笔记_二维数组的查找判断

    在进行数据处理的工作中,有时只是通过一维的list和有一个Key,一个value组成的字典,仍无法满足使用,比如,有三列.或四列,个数由不太多. 举一个现实应用场景:学号.姓名.手机号,可以再加元素 ...

  4. C语言学习笔记 (006) - 二维数组传参的三种表现形式

    # include <stdio.h> # include <stdlib.h> # define M # define N int getdate(int (*sp)[M]) ...

  5. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

  6. python3.4学习笔记(十一) 列表、数组实例

    python3.4学习笔记(十一) 列表.数组实例 #python列表,数组类型要相同,python不需要指定数据类型,可以把各种类型打包进去#python列表可以包含整数,浮点数,字符串,对象#创建 ...

  7. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  8. JavaSE学习笔记(7)---数组

    JavaSE学习笔记(7)---数组 1.什么是数组 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个 ...

  9. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  10. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

随机推荐

  1. [.NET]解决EMF图像自动放大空白

    在.NET中产生emf主要使用Metafile对象,但在使用过程中会发生图像自动放大,多余空白的问题. 模拟:声明Size(100,100)的区域,并绘制p1(-50,-50)->p2(50,5 ...

  2. 如何批量删除SQL注释?

    如何批量删除SQL注释.. 这个,可能是用来干坏事的吧.不过有时候要做一些重构,也还是有用.嘿嘿 使用工具,notepad++,注意要选择正则表达式按钮才行. [1]删除 /*   */ /\*{1, ...

  3. hadoop streaming怎么设置key

    充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...

  4. python 皮尔森相关系数

    皮尔森理解 皮尔森相关系数(Pearson correlation coefficient)也称皮尔森积矩相关系数(Pearson product-moment correlation coeffic ...

  5. EXTJS 4:在renderer中如何控制一个CheckColumn的行为,如显示,只读等属性

    在编写grid下的column时,大家肯定会经常用到renderer这个方法来改变文字的呈现形式,那么如果该column是一个特殊的column,比如CheckColumn时,该方法应该怎样写呢?官方 ...

  6. memcache 基础原理

    memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的.需要频繁访问数据库的网站访问速 ...

  7. 搭建Linux-java web运行环境之二:安装mysql

    环境 OS:Red Hat Enterprise Linux Server release 7.3 (Maipo) JDK:jdk-7u80-linux-x64.tar.gz Tomcat:apach ...

  8. python 文件不存在时才能写入,读写模式xt

    想向一个文件中写入数据,但是前提必须是这个文件在文件系统上不存在.也就是不允许覆盖已存在的文件内容. 可以在open() 函数中使用x 模式来代替w 模式的方法来解决这个问题.比如: >> ...

  9. Python 读写文件中w与wt, r与rt的区别

    w和wt是一们的,r和rt是一样的,t是默认参数,可以省略的,help(open)就能看到open的参数的详细说明. w,r,wt,rt都是python里面文件操作的模式.w是写模式,r是读模式.t是 ...

  10. http://xx.xxx.xxx.xx:8080/把路径设置成http服务访问的形式

    1.官网下载python安装包(eg:python-3.6.3-embed-win32),并解压文件 2.配置环境变量 3.cmd里查看python版本并设置服务路径 4. 访问查看