算法(1)-冒泡排序

算法(1)- 冒泡排序概述图解代码时间复杂度

概述

冒泡排序是所有排序里最基础也是程序员必须要会手写的排序算法,他的实现原理其实很简单,就像水泡从水底冒出一样,一颗一颗的往上冒。它默认是从大到小排序,按顺序依次比较相邻的两个数,将小数换到前面,大数换到后面。依次比较n-1轮后获得一个由小到大的有序数组

图解

算法(1)-冒泡排序
如上图,这是第一遍的详解,原数据是[8,6,7,9,1]。第一次:取出第一个数8和第二个数6作比较,8大于6,大数在后,小数在前,即交换8和6的位置,变成[6,8,7,9,1]。第二次:取出第二个数8和第三个数7作比较,8大于7,交换位置,变成[6,7,8,9,1]。第三次:取出第三个数8和第四个数9作比较,8小于9,那么此次不需要交换位置。第四次:取出第四个数字9和第五个数字1作比较,9大于1,交换位置,变成[6,7,8,1,9]。至此第一轮冒泡结束,筛选出最大的数字9。
算法(1)-冒泡排序
如上图,这是全过程,第一遍找出最大数9,第二遍找出第二大数字8,第三遍找出第三大数7,第四遍找出第四大数6,最后只剩1不需要自己比较,所以最终得到的结果为[1,6,7,8,9]

代码

public void BubbleSort(int array[]){
int count = 0;//进行的轮数
for(int i=0;i<array.length-1;i++){//循环控制轮数
for(int j=0;j<array.length-1-i;j++){//循环控制每轮进行比较的次数
count++;//每一轮都加一
if(array[j]>array[j+1]){//判断是否大数在前小数在后,并且交换大小数的位置
int temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
}

时间复杂度

第一轮需要比较(n-1)次,第二轮比较(n-2)次…第(n-1)轮需要比较1次则总共需要比较

i=1n1(ni)=1+2+3+...+n1=n22n2\sum_{i=1}^{n-1} (n-i) =1+2+3+...+n-1=\frac{n^2}{2}-\frac{n}{2}

∑i=1n−1​(n−i)=1+2+3+...+n−1=2n2​−2n​次,所以冒泡排序的时间复杂度为:O(

n2n^2

n2)

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

算法(1)-冒泡排序

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » 算法(1)-冒泡排序
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏