博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典排序算法 - 冒泡排序Bubble sort
阅读量:7139 次
发布时间:2019-06-28

本文共 1658 字,大约阅读时间需要 5 分钟。

原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

这样一趟过去后,最大或最小的数字被交换到了最后一位,

然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子

例子为从小到大排序,

原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |

 

第一趟排序(外循环)

第一次两两比较6 > 2交换(内循环)

交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |

 

第二次两两比较,6 > 4交换

交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |

 

第三次两两比较,6 > 1交换

交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |

 

第四次两两比较,6 > 5交换

交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第五次两两比较,6 < 9不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二趟排序(外循环)

第一次两两比较2 < 4不交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |

交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |

 

第二次两两比较,4 > 1交换

交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |     交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三次两两比较,4 < 5不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |     交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第四次两两比较,5 < 6不交换

交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

 

第三趟排序(外循环)

第一次两两比较2 > 1交换

交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第二次两两比较,2 < 4不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |     交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第三次两两比较,4 < 5不交换

交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |     交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |

 

第四趟排序(外循环)无交换

第五趟排序(外循环)无交换

            

排序完毕,输出最终结果1 2 4 5 6 9

代码仅供参考

static void bubble_sort(int[] unsorted)        {            for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[i] > unsorted[j]) { int temp = unsorted[i]; unsorted[i] = unsorted[j]; unsorted[j] = temp; } } } } static void Main(string[] args) { int[] x = { 6, 2, 4, 1, 5, 9 }; bubble_sort(x); foreach (var item in x) { Console.WriteLine(item); } Console.ReadLine(); }

 

冒泡排序动画演示

转载于:https://www.cnblogs.com/qq3111901846/p/5909572.html

你可能感兴趣的文章
Hyper-V 3虚拟机快照之一 快照应用介绍
查看>>
ASP.NET中页面传值
查看>>
Flex4中动态生成RadioButton,绑定数据源
查看>>
linux i2c驱动架构-dm368 i2c驱动分析
查看>>
【教程】Source Insight 关联 .S文件,汇编文件
查看>>
[置顶] 内存映射失败MapViewOfFile 失败 返回 8
查看>>
补丁文件格式分析
查看>>
栈的链式存储结构及其基本运算的实现
查看>>
hud1700(计算几何——求等边三角形)
查看>>
Android--多线程之Looper
查看>>
NHibernate 存储过程 第十四篇
查看>>
音序表字母大小写的正确写法
查看>>
AutoCompleteTextView的应用
查看>>
groovy-保留字
查看>>
window.location.href和document.location.href、document.URL的区别
查看>>
浅谈程序猿的职业规划,看你如何决定自己的未来吧。
查看>>
Swing基础知识
查看>>
奇怪的Visual Studio 2013停止响应问题
查看>>
.NET Framework 4.5 五个很棒的特性
查看>>
SharePoint 2013 图文开发系列之可视化WebPart
查看>>