经典排序算法 - 鸡尾酒排序Cocktail sort
经典排序算法 - 鸡尾酒排序Cocktail sort
鸡尾酒排序基于冒泡排序,双向循环
还是看例子吧,给定待排数组[2 3 4 5 1]
第一趟过去时的每一步
第一步迭代,2 < 3不换
[2 3 4 5 1]
第二步迭代,3 < 4不换
[2 3 4 5 1]
第三步迭代,4 < 5不换
[2 3 4 5 1]
第四步迭代,5 > 1交换
[2 3 4 1 5]
第一趟回来时的第一步,鸡尾酒一次到头后就回返回来,再到头后再过去,来回比,一个来回能排两个数字
第五步迭代,1 < 5不交换
[2 3 4 1 5]
第六步迭代,1 < 4交换
[2 3 1 4 5]
第七步迭代,1 < 3交换
[2 1 3 4 5]
第八步迭代,2 > 1交换
[1 2 3 4 5]
排序完毕,顺序输出结果即可得[ 1 2 3 4 5]
如何判断排序结束了?
假如一趟来回没有交换任何数字,则表示该数组已经有序了,可以设置了个变量表示有没有交换过
代码仅供参考
static void cocktail_sort(int[] unsorted) { bool swapped = false; do { for (int i = 0; i < unsorted.Length - 1; i++) { if (unsorted[i] > unsorted[i + 1]) { int temp = unsorted[i]; unsorted[i] = unsorted[i + 1]; unsorted[i + 1] = temp; swapped = true; } } swapped = false; for (int j = unsorted.Length; j > 1; j--) { if (unsorted[j] < unsorted[j - 1]) { int temp = unsorted[j]; unsorted[j] = unsorted[j - 1]; unsorted[j - 1] = temp; swapped = true; } } } while (swapped); } static void Main(string[] args) { int[] x = { 6, 2, 4, 1, 5, 9 }; selection_sort(x); foreach (var item in x) { Console.WriteLine(item); } Console.ReadLine(); }
------------------------------------------
除非特别声明,文章均为原创,版权与博客园共有,转载请保留出处
BUY ME COFFEE


标签:
cocktail_sort
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架