zoukankan      html  css  js  c++  java
  • C# 数组排序 Array.Sort 方法

    C# 数组排序 Array.Sort 方法

    参考 https://docs.microsoft.com/zh-cn/dotnet/api/system.array.sort?view=net-5.0

    命名空间:System

    对一维数组进行排序

    重载:

    image-20210504164334334

    我们主要介绍这一个重载:

    image-20210504164652956

    指定 IComparer 规则

    例如,想要对一个int数组递减排序

    using System;
    using System.Collections;
    
    public class DecComparer : IComparer<int>
    {
        public int Compare(int a, int b)
        {
            return a - b;
        }
    }
    
    // Array.Sort(arr, 0, arr.Length, new DecComparer());
    

    如果 comparernull ,中指定范围内的元素中的每个元素都 array 必须实现 IComparable 接口,以便与中的每个其他元素进行比较 array

    继承 IComparable 接口

    using System;
    using System.Collections;
    
    public class Temperature : IComparable
    {
        protected double temperatureF;
        
        public int CompareTo(object obj){
            if(obj == null) return 1;
            
            Temperature otherTemperature = obj as Temperature;
            
            if(otherTemperature != null){
                return this.temperatureF.CompareTo(otherTemperature.temperatureF);
            }else{
                throw new ArgumentException("Object is not a Temperature");
            }
        }
        
        public double Fahrenheit
        {
            get
            {
                return this.temperatureF;
            }
            set {
                this.temperatureF = value;
            }
        }
    
        public double Celsius
        {
            get
            {
                return (this.temperatureF - 32) * (5.0/9);
            }
            set
            {
                this.temperatureF = (value * 9.0/5) + 32;
            }
        }
    }
    
    
    public class CompareTemperatures
    {
       public static void Main()
       {
          ArrayList temperatures = new ArrayList();
          // Initialize random number generator.
          Random rnd = new Random();
    
          // Generate 10 temperatures between 0 and 100 randomly.
          for (int ctr = 1; ctr <= 10; ctr++)
          {
             int degrees = rnd.Next(0, 100);
             Temperature temp = new Temperature();
             temp.Fahrenheit = degrees;
             temperatures.Add(temp);
          }
    
          // Sort ArrayList.
          temperatures.Sort();
    
          foreach (Temperature temp in temperatures)
             Console.WriteLine(temp.Fahrenheit);
       }
    }
    // The example displays the following output to the console (individual
    // values may vary because they are randomly generated):
    //       2
    //       7
    //       16
    //       17
    //       31
    //       37
    //       58
    //       66
    //       72
    //       95
    
    ---- suffer now and live the rest of your life as a champion ----
  • 相关阅读:
    jquery 内容选择器
    jquery 子选择器
    jquery 基础选择器
    jquery 基础过滤器
    jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]
    [Spring]@Autowired,@Required,@Qualifier注解
    [Spring]IOC控制反转和DI依赖注入
    [LeetCode]无重复字符的最长子串
    Spring-代理模式
    Spring-使用注解开发
  • 原文地址:https://www.cnblogs.com/popodynasty/p/14729843.html
Copyright © 2011-2022 走看看