c# 数组 (二维数组、反转数组、orderby排序)

用来存来存放同一类型数据,可用foreach in来进行遍历

一维数组声明方式:

1. int[] nums = new int [10]

2. int[] nums = {1,2,3,4,5,6}

数组为引用类型,类似指针,传递的是数组的地址,所以在函数方法中改变数组,方法外数组会相应改变。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CsvCook;
namespace test
{

    class Program
    {
        static void Main(string[] args)
        {
//反转数组
            string[] names = new string[] { "1","2","3","4"};

            string temp;
            for (int i = 0; i < names.Length/2; i++) //n个元素只需要运行n/2次
            {
                
                temp = names[i]; //将第一个值拿出来存到临时变量
                names[i] = names[names.Length - 1-i];//将最后一个值赋给第一个(随i变化)
                names[names.Length - 1-i] = temp;//将临时变量赋给最后一个(随i变化)
            }

            foreach (var item in names)
            {
                Console.WriteLine(item);

            }
            Console.ReadKey();

        }
    }
}





  

//冒泡排序

int[] names = { 7,6,5,4,3,2,1,0 };
int temp;
//外层for代表需动的元素个数,内层for代表每个元素需要排列动的次数
//8个元素需要动7个,即是n-1次
for (int i = 0; i < names.Length - 1; i++)
{

for (int j = 0; j < names.Length - 1 - i; j++)//此处i为已经排列好的元素不用再动了-i
{
if (names[j] > names[j + 1])
{
temp = names[j];
names[j] = names[j + 1];
names[j + 1]= temp;
}

}

}

  最简单的使用 arrary.sort() 表示把数组升序12345...排列

                             array.reverse(),表示把数组反转

两个结合起来就能使数组正序排列和反序排列

 

排序的方法orderby:

 1. linq

public  class student  //储存数据的
    {
       private int count;
        public string Name { get; set; }
        public int Count { get => count; set => count = value; }

        
    }
//类的数组
student[] stu ={
          new student     { Name = "我", Count = 7 },
          new student    { Name = "你", Count = 8 }

            };
//迭代器
         IEnumerable<student> b= stu.OrderByDescending(studen => studen.Count);
//遍历输出
            foreach (var item in b)
            {
                textBox1.AppendText(item.Name);
            }

 

  

 

 

 

 

 

 

 

 

我们把二维数组的两个下标分别称为行下标和列下标,在前面的是行下标,在后面的是列下标。

那么什么时候要用二维数组呢?一般有两种情况,一种是描述一个二维的事物。比如用1表示墙,用0表示通路,我们可以用二维数组来描述一个迷宫地图;用1表示有通路,0表示没有通路,

我们可以用二维数组来描述几个城市之间的交通情况。还有一种是描述多个具有多项属性的事物。比如有多个学生,每个学生有语文、数学和英语三门成绩,我们就可以用二维数组来描述。
不要企图将不同数据类型的属性整合到一个二维数组中去

 

 

 

 

初始化:

 

 

int[,] arr = new int[,] { { 1, 2, 3 }, { 7, 8, 9 } };//定义二维数组方法1
int[,] a2 = new int[2,4]; //方法2 ,前面2表示行,4表示元素个数

 

Console.WriteLine( arr.GetLength(0));//获取行数

 

 

 

二维数组遍历 :
int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 3, 4, 5 } };//定义二维数组 for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { Console.Write(Convert.ToString(arr[i, j]) + " } Console.Write("\n"); }

  

 

posted @ 2021-02-01 15:39  遥月  阅读(1760)  评论(0)    收藏  举报