C#学习笔记(27)——委托排序(1)

说明(2017-11-20 17:21:35):

1. 感觉难点都在冒泡排序上。。貌似之前跳过去了没学啊!冒泡排序的精髓就在于,两两比较,最大的排到最后一位,再把前面的重新两两比较,把最大的排到倒数第二位,一直排完,最小的就在第一位了。

2. 两个排序方法,自己写的numCompare按数字大小排序,和系统自带的string.Compare按字符大小排序,分别授权给委托,哪个授权执行哪个方法。

3. 后面说要搞得再复杂一点,所以待续。。To be continued。。

4. 忘了写,效果要在Console.ReadKey()那一行加断点,观察nums的值得排序。

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

namespace _04_委托排序
{
    class Program
    {
        public delegate int MyDel(string s1, string s2);
        static void Main(string[] args)
        {
            string[] nums = "600,1,10,100,22,200,3,130,8".Split(',');
            //定义委托变量
            MyDel myDel;
            //选择一个方法授权,字符串排序,或者数字排序
            //string.Compare()字符串排序,应该是按照ASCII码排序。
            myDel = string.Compare;
            //myDel = numCompare;
            for (int i = 0; i < nums.Length; i++)
            {
                for (int j = 0; j < nums.Length - i - 1; j++)
                {
                    if (myDel(nums[j], nums[j + 1]) > 0)
                    {
                        string a = nums[j];
                        nums[j] = nums[j + 1];
                        nums[j + 1] = a;
                    }
                }
            }
            Console.ReadKey();
        }
        //按照数字大小排序
        public static int numCompare(string n1, string n2)
        {
            int num1 = Convert.ToInt32(n1);
            int num2 = Convert.ToInt32(n2);
            if (num1 < num2)
            {
                return -1;
            }
            else if (num1 > num2)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    }
}

 另外,numCompare方法可以简写,后来回看视频才发现的:

        public static int numCompare(string n1, string n2)
        {
            return Convert.ToInt32(n1) - Convert.ToInt32(n2);
        }
原文地址:https://www.cnblogs.com/Jacklovely/p/7867362.html