//从大到小,从小到大
public delegate bool MyDelegate(int a, int b);
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
//一般方法
SortMax(array);
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.WriteLine();
SortMin(array);
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.WriteLine();
//委托方法
MyDelegate condition = Max;
Sort(array, condition);
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.WriteLine();
condition = Min;
Sort(array, condition);
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
static void SortMax(int[] array)
{
//外层循环Length-1次
for (int i = 0; i < array.Length; i++)
{
//内层循环Length-1-i(外层循环的当前次数)
for (int j = 0; j < array.Length - 1 - i; j++)
{
//如果条件(大)达成,交换位置
if (array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
static void SortMin(int[] array)
{
//外层循环Length-1次
for (int i = 0; i < array.Length; i++)
{
//内层循环Length-1-i(外层循环的当前次数)
for (int j = 0; j < array.Length - 1 - i; j++)
{
//如果条件(小)达成,交换位置
if (array[j] < array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
static void Sort(int[] array, MyDelegate condition)
{
//外层循环Length-1次
for (int i = 0; i < array.Length; i++)
{
//内层循环Length-1-i(外层循环的当前次数)
for (int j = 0; j < array.Length - 1 - i; j++)
{
//如果条件(大)达成,交换位置
if (condition(array[j], array[j + 1]))
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
static bool Max(int a, int b)
{
return a > b;
}
static bool Min(int a, int b)
{
return a < b;
}
}
C#写一个排序的方法,他可以指定不同的排序逻辑(使用委托)
最新推荐文章于 2024-07-07 19:06:50 发布