数组排序

==========================================第一种(普通排序)

string[] s = { "zhangsan", "lisi", "wangwu", "liumazi" };
            Array.Sort(s);//排序
            foreach (string item in s)
            {
                Console.WriteLine(item);
            }

==========================================第二种(自定义类排序)

------------------------Person.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
 //想要自定义排序,必须实现IComparable<Person>接口
    public class Person:IComparable<Person>
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int CompareTo(Person other)
        {
            if (other == null)//如果传入的对象为空,则抛出异常
                throw new ArgumentException("抛出异常");
            int resouce = this.FirstName.CompareTo(other.FirstName);//按照FirstName排序
            if (resouce == 0)//如果两个字符串一样
            {
                resouce = this.LastName.CompareTo(other.LastName);//则按照LastName排序
            }
            return resouce;//返回一个整形,
            //一个值,指示要比较的对象的相对顺序。
            //返回值的含义如下: 值 含义 小于零 此实例按排序顺序在 obj 前面。
            //零 此实例与 obj 在排序顺序中出现的位置相同。
            //     大于零 此实例按排序顺序在 obj 后面。
        }
    }
}

------------------------Main方法

Person[] p = new Person[] { new Person { FirstName = "zhangdi", LastName = "lisi" }, new Person { FirstName = "wangwu", LastName = "zhaoliu" } };
            Array.Sort(p);
            foreach (var pp in p)
            {
                Console.WriteLine(pp.FirstName);
            }
            Console.ReadKey();

==========================================第三种(自定义类,自定义排序)

------------------------Student.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    public class Student
    {
        public string FristName { get; set; }
        public string LastName { get; set; }
    }
}

------------------------StuSort.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    //枚举,用于选择要按那种方式排序
    public enum FirstAndLast
    { 
        FristName,
        LastName
    }
    //想要自定义排序,必须实现IComparer<Student>接口
    public class StuSort:IComparer<Student>
    {
        private FirstAndLast fal;//枚举字段
        //构造函数,初始换枚举
        public StuSort(FirstAndLast f) {
            fal = f;
        }
        public int Compare(Student x, Student y)
        {
            if (x == null || y == null)//当x或y的对象为空的时候抛出异常
                throw new ArgumentException("对象不能为空");
            int resouce = 0;
            switch (fal)
            {
                case FirstAndLast.FristName://当枚举为FirstAndLast.FristName就按FristName排序
                    resouce = x.FristName.CompareTo(y.FristName);
                    break;
                case FirstAndLast.LastName://当枚举为FirstAndLast.LastName就按LastName排序
                    resouce = x.LastName.CompareTo(y.LastName);
                    break;
                default:
                    throw new ArgumentException("错误");
                    break;
            }
            return resouce;
        }
    }
}

------------------------Main方法

 Student[] s = new Student[] { new Student { FristName = "zhangdi", LastName = "aaa" }, new Student { FristName = "lisi", LastName = "bbb" }, new Student { FristName = "aa", LastName = "ccc" } };
            Array.Sort(s, new StuSort(FirstAndLast.LastName));
            foreach (var pp in s)
            {
                Console.WriteLine(pp.FristName);
            }
            Console.ReadKey();

 

你可能感兴趣的:(排序,C#,数组,数组排序)