双冒泡排序算法,比传统的冒泡排序效率几乎提升了一倍,算法减少了一半

江湖评谈 2016-12-28 04:18:46
以下面这种算法来看,效率几乎提升了一倍,算法则减少了一半。

for(i=0;i<n;i++) printf("%d",source[i]);
printf("\n");
int Low=0;
int Hight=n-1;
while(Low<Hight)
{
for(j=Low;j<Hight;j++)
{
if(source[j]>source[j+1]) { temp=source[j];source[j]=source[j+1];source[j+1]=temp;}
}
--Hight;printf("\n");
for(j=Hight;j>Low;j--)
{
if(source[j]<source[j-1]) { temp=source[j];source[j]=source[j-1];source[j-1]=temp;}
}
++Low;printf("\n");
}
...全文
233 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31651207 2016-12-28
  • 打赏
  • 举报
回复
嵌套的循环体的时间复杂度是用乘的吧,很多好的算法都是提前算出结果,结束计算,平均复杂度就低了。
风隐若现 2016-12-28
  • 打赏
  • 举报
回复
看懂了,每次把最大值和最小放两边,不过效率没有减小,外层循环减少为一半,内层增加一倍,还是一样的效率。而且时间复杂度不是按倍数来的。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧