C# 设计模式系列教程-模板方法模式
///
/// 抽象类,定义冒泡排序的骨架
///
public abstract class BubbleSorter
{
private int operations = 0;
protected int length = 0;
///
/// 冒泡排序算法
///
///
protected int DoSort()
{
operations = 0;
if (length <= 1)
{
return operations;
}
for (int nextToLast = length - 2; nextToLast >= 0; nextToLast--)
{
for (int index = 0; index <= nextToLast; index++)
{
if (OutOfOrder(index))
{
Swap(index);
}
operations++;
}
}
return operations;
}
///
/// 留给子类实现的交换位置方法
///
///
protected abstract void Swap(int index);
///
/// 留给子类实现的比较方法
///
///
///
protected abstract bool OutOfOrder(int index);
}
///
/// 整型类型的冒泡算法实现
///
public class IntBubbleSorter:BubbleSorter
{
private int[] array = null;
///
/// 用冒泡算法排序
///
///
///
public int Sort(int[] theArray)
{
array = theArray;
length = array.Length;
// 调用冒泡算法
return DoSort();
}
///
/// 实现冒泡算法中的交换操作
///
///
protected override void Swap(int index)
{
int temp = array[index];
array[index] = array[index + 1];
array[index + 1] = temp;
}
///
/// 实现冒泡算法中的比较操作
///
///
///
protected override bool OutOfOrder(int index)
{
return (array[index] > array[index + 1]);
}
}
///
/// 浮点数类型的冒泡算法
///
public class FloatBubbleSorter:BubbleSorter
{
private float[] array = null;
///
/// 用冒泡算法排序
///
///
///
public int Sort(float[] theArray)
{
array = theArray;
length = array.Length;
// 调用冒泡算法
return DoSort();
}
///
/// 实现冒泡算法中的交换操作
///
///
protected override void Swap(int index)
{
float temp = array[index];
array[index] = array[index + 1];
array[index + 1] = temp;
}
///
/// 实现冒泡算法中的比较操作
///
///
///
protected override bool OutOfOrder(int index)
{
return (array[index] > array[index + 1]);
}
}
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播