冒泡排序

冒泡排序的最差时间复杂度为o(n^2),最好时间复杂度为o(n)
1.首先,按照传统的算法实现

for(int i=arr.length-1;i>0;i--)
for(int j=0;j<i;j++)
{
if(arr[j]>arr[j+1])
swap(arr,j,j+1);
}

2.从这段代码分析,当数组本身为有序数组时,时间复杂度仍为o(n^2);所以需要对代码优化。

boolean flag;
for(int i=arr.length-1;i>0;i--)
{
flag=false;
for(int j=0;j<i;j++)
{
if(arr[j]>arr[j+1])
{
swap(arr,j,j+1);
flag=true;
}
}
if(flag==false)
break;
}

也就是当进行第一轮比较时,如果没有发生交换情况,直接跳出循环,所以就进行了一次比较,故此时的时间复杂度为o(n)

全部评论

相关推荐

02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
zzzilik:没事的,才刚刚开始,后面会捞的,这个三天没人发起面试自动结束,但是面试官还是能看到简历,四月份主战场会慢慢捞
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务