委托
前言
什么是委托?
讲方法作为参数传递,赋值一个方法的引用
一、冒泡排序的思想
- 声明一个数组 数组的索引由0-array.Length-1 比较array[i]和array[i+1]的大小 若array[i]>array[i+1] 则将两者交换位置
再比较array[i+1]和array[i+2]的大小依次进行,经过一轮循环 数组中的max值会被排在数组的最后位置
然后再次循环直至排序完成
二、对冒泡排序的扩展
1.对int类型的冒泡排序
代码如下(示例):
static void IntSort( int[] sortArray)
bool swapped =true;
do{
swapped=false;
for(int i=0;i<sortArray.Length-1;i++)
{
if(sortArray[i]>sortArray[i+1])
{
temp=sortArray[i];
sortArray[i]=sortAray[i+1];
sortArray[i+1]=temp;
swapped=true;
}
}
}while(swapped)
2.对任何类型进行冒泡排序(雇员类)
Name Salary 何时大写何时小写
重写tostring方法
代码如下(示例):
class Employee
{
public string Name{get;private set;}
public decimal salary{get;private set;}
public Employee(string name,decimal salary)
{
this name=name;
this salary=salary;
}
public static bool Compare(Employee e1,Employee e2)
{
if(e1>e2)
{return true;}
return false;
}
public override string ToString()
{
return Name+":"+Salary;
}
}
commonsort中的function委托指向employee类中的compare方法
class Program
{
static void CommonSort<T>(T[] sortArray,Func<T,T,bool> compareMethod)
{
bool swapped =true;
do{
swapped=false;
for(int i=0;i<sortArray.Length-1;i++)
{
if(compareMethod(sortArray[i],sortArray[i+1])
{
T temp=sortArray[i];
sortArray[i]=sortAray[i+1];
sortArray[i+1]=temp;
swapped=true;
}
}
}while(swapped)
static void Main(string[] args)
{
Employee[] employees=new Employee[]
{
new Employee("dsf",12),
new Employee("dsffw",14),
new Employee("dsfwwd",15)
}
CommonSort<Employee>(employees,Employee.Compare);
foreach(Employee em in employees)
{
Console.WriteLine(em.ToString());
}
}
}
总结
提示:这里对文章进行总结: