一维数组

冒泡排序

二维数组

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. Spring-事务管理(Transaction)

    1.事务介绍 事务(Transaction):访问并能更新数据库中数据项的一个程序执行单元. 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须要么全部完成,要么什么都不做,如果有 ...

  2. iOS开发-url包括中文报错解决的方法

    常常, 我们用通过这个方案调用API. NSString* urlString = [NSString stringWithFormat:@"http://api.douban.com/v2 ...

  3. 【剑指offer】斐波那契数列

    一.题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 二.思路: 式子: n=0时,f=0:n=1或者n=2时f=1:否则f=f(n-1)+f(n ...

  4. python中文件变化监控-watchdog

    在python中文件监控主要有两个库,一个是pyinotify ( https://github.com/seb-m/pyinotify/wiki ),一个是watchdog(http://pytho ...

  5. 对比jQuery和AngularJS的不同思维模式

    jQuery是dom驱动,AngularJS是数据驱动,这里有一篇文章阐述的非常好,建议看看 本文来自StackOverFlow上How do I “think in AngularJS” if I ...

  6. [LeetCode] 513. Find Bottom Left Tree Value_ Medium tag: BFS

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  7. OpenCV Mat数据类型及位数总结(转载)

    OpenCV Mat数据类型及位数总结(转载) 前言 opencv中很多数据结构为了达到內存使用的最优化,通常都会用它最小上限的空间来分配变量,有的数据结构也会因为图像文件格式的关系而给予适当的变量, ...

  8. 使用 MtVerify.h头文件 ,用的时候把他头文件的内容添加到项目

    #include <windows.h>  //windodws变量相关头文件 MtVerify.h的内容如下:#pragma comment( lib, "USER32&quo ...

  9. c# 日期函数[string.Format----GetDateTimeFormats]格式

    DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2005-11-5 13:21:25Label2.Text = dt.ToFileTi ...

  10. mysql进程文件