鸡尾酒排序,也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 或者 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。
参照百度百科,整了一个C#版本的,看下边的代码:
/// <summary>
/// 鸡尾酒排序
/// </summary>
static void CockTailSort()
{
int numberOfLoop = 0;
int[] intArr = new int[] { 0, 3, 2, 1, 6, 4, 7, 8, 9, 5 };
//前后同时排序,能有一些效率的提升
int bottom = 0;
//假设一开始有替换
bool flag = true;
while (flag)
{
//假设没有替换
flag = false;
//前半部分排列
for (int i = bottom; i < intArr.Length - 1; i++)
{
numberOfLoop++;
//两个数作比较,把小的排在前边,最大的就会走到最后
if (intArr[i] > intArr[i + 1])
{
int temp = intArr[i + 1];
intArr[i + 1] = intArr[i];
intArr[i] = temp;
flag = true;
}
}
//前序排列没问题了,后续也没问题
if (flag)
{
//后半部分排列
for (int i = intArr.Length - 2; i > bottom; i--)
{
numberOfLoop++;
if (intArr[i] < intArr[i - 1])
{
int temp = intArr[i - 1];
intArr[i - 1] = intArr[i];
intArr[i] = temp;
flag = true;
}
}
}
bottom++;
}
DisplaySortResult(numberOfLoop, intArr);
}
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论