登陆

Java算法剖析之冒泡排序(Bubble Sort)

admin 2020-02-14 129人围观 ,发现0个评论

冒泡排序姓名由来?

越大的元素经由交流渐渐“浮”到数列的顶端(升序或降序摆放),就好像碳酸饮料中二氧化碳的气泡终究会上浮到顶端相同,故名“冒泡排序”。

冒泡排序原理

  1. 比较相邻的两个元素;假如榜首个比第二个大,就交流它们两个。
  2. 对每一对相邻元素做相同的作业,从开端榜首对到结束的最终一对;在这一点,最终的元素应该会是最大的数。
  3. 针对一切的元素重复以上的过程,除了最终一个元素。
  4. 继续每次对越来越少的元素重复上面的过程,直到没有任何一对数字需求比较。

上述几点如下图所示:

代码解析:

对Integer数组进行排序:

Integer[] arr = {3, 38, 5, 44, 15, 36, 26, 47, 27, 2, 46, 4,二手车估价计算器 19, 50, 48};

  • 冒泡排序一般写法

  • 冒泡排序逻辑写法

  • main办法

成果:

冒泡排序逻辑写法:[2, 3, 4, 5, 15, Java算法剖析之冒泡排序(Bubble Sort)19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

冒泡排序一般写法:[2, 3, 4, 5, 15, 19, 26, 27, 36, 3Java算法剖析之冒泡排序(Bubble Sort)8, 44, 46, 47, 48, 50]

算法剖析

时刻复杂度

  • 假如数据是正序,只需求走一趟即可完结排序。所需的比较次数C和记载移动次数M均到达最小值,即:Cmin=n-1;Mmin=0;所以冒泡排序最好的时刻复杂度为O(n)。
  • 假如数据是反序,则需求进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记载三次来到达交流记载方位。在这种情况下,比较和移动次数均到达最大值:

即最坏情况下时刻复杂度为O(n2)【n的平方】;

  • 所以,冒泡排序总的均匀时刻复杂度为:O(n2)。

算法安稳性

冒泡排序便是把小的元素往前飘或许把大的元素往后飘。比较是相邻的两个元素之间比较,交流也发作在这两个元素之间。所以假如两Java算法剖析之冒泡排序(Bubble Sort)个元素持平,是不会再交流的;假如两个持平的元素没有相邻,那么即便经过前面的两两交流把两个相邻起来,这时候也不会交流,所以相同元素的前后次序并没有改动,所以冒泡排序是一种安稳排序算法。

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP