zoukankan      html  css  js  c++  java
  • 委托让冒泡排序的扩展更加优雅开闭原则的使用

    委托让冒泡排序的扩展更加优雅--开闭原则的使用
    作者:水木年华 | 出处:博客园 | 2011/10/6 18:27:57 | 阅读1次
      本文主要谈的是委托相关运用。包括委托的简单定义,使用,好处;以及委托和Lambda的关系。所有知识点都简化为启发式的注释,应该不难理解,希望对你有帮助。
       /// <summary>
    /// 委托让排序代码更加优雅(易扩展,易维护)
    /// 本文包含知识点:
    /// 1.委托定义
    /// 2.委托的好处
    /// 3.Lamda(语句Lamda和委托Lambda)
    /// 4.Lambda和委托的关系
    /// </summary>
    class Program
    {
    //定义内嵌委托(委托本质是一个类;编译器默认为继承自System.Delegate)
    public delegate bool ComparerionHandler(int first, int second);

    static void Main(string[] args)
    {

    int[] beforeSortList = new int[3] { 1, 3, 2 };

    Console.WriteLine(string.Join(",", beforeSortList.ToArray()));

    ///实名委托传递参数
    //int[] afterSortList = BubbleSort(beforeSortList, Asb);

    ///匿名方法传递参数
    //int[] afterSortList = BubbleSort(beforeSortList, delegate(int first, int second) { return first > second; });

    ///语句Lambda传递参数(Lambda是匿名方法的简化语法)
    int[] afterSortList = BubbleSort(beforeSortList, (first, second)=>{ return first > second; });

    Console.WriteLine(string.Join(",", afterSortList.ToArray()));


    }
        ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

         //利用委托达到-->对扩展是开放的
    //升序
    //public static bool Asb(int first, int second)
    //{
    // return first > second;
    //}

    //降序
    public static bool Desc(int first, int second)
    {
    return first < second;
    }

    //字母排序

    //可扩展的其他排序……


         ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
         //冒泡排序
         //利用委托达到-->对修改是封闭的
    public static int[] BubbleSort(int[] list, ComparerionHandler compareion)
    {
    int temp;

    for (int i = list.Length - 1; i >= 0; i--)
    {
    for (int j = 1; j <= i; j++)
    {
    if (compareion(list[j - 1], list[j]))
    {
    temp = list[j];
    list[j] = list[j - 1];
    list[j - 1] = temp;
    }
    }
    }
    return list;
    }

    }
  • 相关阅读:
    B. Sorted Adjacent Differences(思维构造)
    C. Yet Another Counting Problem(循环节规律)
    B. Phoenix and Beauty(贪心构造)
    Phoenix and Distribution(字典序贪心)
    D. Almost All Divisors(数学分解因子)
    Mongodb之简介
    web服务版智能语音对话
    图灵机器人
    人工智能之语音
    人工智能
  • 原文地址:https://www.cnblogs.com/mingyongcheng/p/2760511.html
Copyright © 2011-2022 走看看