C#学习03---数组-and-Array

介绍C#中数组的用法。

首先用对整数数组排序的例子介绍一般数组和Array。

然后介绍结构体数组以及怎样按照结构体某一个字段进行排序。

参考了下面链接内容,在此表示对作者的感谢。

https://blog.csdn.net/jia18337935154/article/details/87880529

https://www.runoob.com/csharp/csharp-array-class.html

一、案例程序

介绍数组的逆转(倒置),数组的排序。

不是自己写程序,是用Array中现成的函数。

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[] list = { 34, 72, 13, 44, 25, 30, 10 };

            Console.Write("原始数组: ");
            foreach (int i in list)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();

            // 逆转数组
            Array.Reverse(list);
            Console.Write("逆转数组: ");
            foreach (int i in list)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();

            // 排序数组
            Array.Sort(list);
           
            Console.Write("排序数组: ");
            foreach (int i in list)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();

            
        }
    }
}

二、分析

1、定义数组并初始化

 int[] list = { 34, 72, 13, 44, 25, 30, 10 };

是在定义一个数组的时候同时进行了初始化。

2、下面是一种更常规的用法:

            int[] list;
            list = new int[7];//一旦定义后,大小不可改变。因此是静态数组。
            
            Random r = new Random();
            for(int i=0;i<7;i++)
            {
                list[i] = r.Next()%10;
            }

3、Array是一个类,其中实现了对数组的通用操作。它是超越类型的,无论什么类型都可以。

Array.Reverse(list);//逆转数组内容

Array.Sort(list);//排序

4、复杂类型数组

下面演示了对于一个结构体数据,怎样使用Array.Sort进行排序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public struct node2
        {//结构体类型
            public int x;
            public int y;
           
        };
        

        public class Ascending : IComparer
        {//升序排列,按照结构体的x字段
            public int Compare(node2 x, node2 y)
            {
                if (x.x > y.x)
                    return 1;
                else if (x.x == y.x)
                    return 0;
                else
                    return -1;
            }
        }
        public static void print(node2[] list)
        {//打印数组中数据
            foreach (node2 t in list)
            {
                Console.Write("({0},{1})", t.x, t.y);
            }
            Console.WriteLine();
        }

        static void Main(string[] args)
        {
            
            node2[] list;// = { 34, 72, 13, 44, 25, 30, 10 };
            list = new node2[7];
            
            Random r = new Random();
            for(int i=0;i<7;i++)
            {//随机生成数据
                node2 t ;
                t.x = r.Next() % 10;
                t.y = 10 + r.Next() % 10;
                //t.set(r.Next() % 10, 10 + r.Next() % 10);
                list[i]=t;
            }


            Console.Write("原始数组: ");

            print(list);


            // 排序数组
            Ascending asc = new Ascending();
            Array.Sort(list,asc);
           
            Console.Write("排序数组: ");
            print(list);

            
        }
    }
}

 

你可能感兴趣的:(C#)