C#中的委托版的冒泡排序

来源:互联网 发布:云计算与大数据工程师 编辑:程序博客网 时间:2024/05/18 04:38
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace 委托
  5. {
  6.     class 委托排序
  7.     {
  8.         private delegate bool EqualsMyContent(Object lobj, Object robj);
  9.         static void Main(string[] args)
  10.         {
  11.             Person[] pers = new Person[] { new Person( "aladdin" , 20 ) , new Person( "fuck" , 99 ) , new Person( "zhao" , 12 ) , new Person( "ok" , 80 ) };
  12.             int[] mynums = new int[] { 12, 11, 4, 2, 44, 32, 343, 43, 323, 23 };
  13.             EqualsMyContent mydel = new EqualsMyContent( MyProcces.EqualsObj);
  14.             for (int i = 0; i < pers.Length; i++)
  15.             {
  16.                 for (int j = i + 1; j < pers.Length; j++)
  17.                 {
  18.                     if (mydel(pers[i], pers[j]))
  19.                     {
  20.                         Person temp = pers[i];
  21.                         pers[i] = pers[j];
  22.                         pers[j] = temp;
  23.                     }
  24.                 }
  25.             }
  26.             for (int i = 0; i < pers.Length; i++)
  27.             {
  28.                 Console.WriteLine(pers[i]);
  29.             }
  30.             //for (int i = 0; i < mynums.Length; i++)
  31.             //{
  32.             //    for (int j = i + 1; j < mynums.Length; j++)
  33.             //    {
  34.             //        if (mydel(mynums[i], mynums[j]))
  35.             //        {
  36.             //            int temp = mynums[i];
  37.             //            mynums[i] = mynums[j];
  38.             //            mynums[j] = temp;
  39.             //        }
  40.             //    }
  41.             //}
  42.             //for (int i = 0; i < mynums.Length; i++)
  43.             //{
  44.             //    Console.WriteLine(mynums[i]);
  45.             //}
  46.             Console.ReadLine();
  47.         }
  48.     }
  49.     class MyProcces
  50.     {
  51.         public static bool EqualsObj(Object obj, Object obj2)
  52.         {
  53.             Person p1 = (Person)obj;
  54.             Person p2 = (Person)obj2;
  55.             if (p1.Age > p2.Age)
  56.             {
  57.                 return true;
  58.             }
  59.             else
  60.             {
  61.                 return false;
  62.             }
  63.         }
  64.     }
  65.     //class MyProcces
  66.     //{
  67.     //    public static bool EqualsObj(Object obj, Object obj2)
  68.     //    {
  69.     //        int p1 = (int)obj;
  70.     //        int p2 = (int)obj2;
  71.     //        if (p1 > p2)
  72.     //        {
  73.     //            return true;
  74.     //        }
  75.     //        else
  76.     //        {
  77.     //            return false;
  78.     //        }
  79.     //    }
  80.     //}
  81.     class Person
  82.     {
  83.         private string name;
  84.         private int age;
  85.         public Person( string name , int age )
  86.         {
  87.             this.Age = age;
  88.             this.Name = name;
  89.         }
  90.         public string Name
  91.         {
  92.             get 
  93.             {
  94.                 return this.name;
  95.             }
  96.             set
  97.             {
  98.                 this.name = value;
  99.             }
  100.         }
  101.         public int Age
  102.         {
  103.             get
  104.             {
  105.                 return this.age;
  106.             }
  107.             set
  108.             {
  109.                 this.age = value;
  110.             }
  111.         }
  112.         public override string ToString()
  113.         {
  114.             return string.Format("姓名:{0} 年纪:{1}"this.Name , this.Age );
  115.         }
  116.     }
  117. }
原创粉丝点击