随笔 - 87  文章 - 279  trackbacks - 0
<2006年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

潜心看书研究!

常用链接

留言簿(19)

随笔分类(81)

文章分类(89)

相册

ACM OJ

My friends

搜索

  •  

积分与排名

  • 积分 - 214752
  • 排名 - 116

最新评论

阅读排行榜

评论排行榜

int* sort(int a[],int length)
{
     
int k=length-1,j,kk,temp;  //k为最后一次调换的位置,kk为临时计数器
     while(k>0)
     
{
          kk
=0;
          
for(j=0;j<k;j++)
         
{
               
if(a[j]>a[j+1])
              
{
                   temp
=a[j];
                   a[j]
=a[j+1];
                   a[j
+1]=temp;
                   kk
=j;
              }

         }

         k
=kk;
     }

     
return a;
}




posted on 2005-12-08 17:52 阅读(2131) 评论(9)  编辑 收藏 引用 所属分类: 数据结构与算法

FeedBack:
# re: 冒泡排序的优化算法 2006-10-27 16:50 superman
能否解释一下优化的地方  回复  更多评论
  
# re: 冒泡排序的优化算法 2006-10-27 20:48 Asp
就是减少了冒泡排序外面的循环的次数,如果在第K项后没有产生交换,则K项之后所有的项必定有序,如果k=0则说明整个数组都有序,则退出……
再不懂就在纸上模拟一遍排序的过程吧,一下就懂了……  回复  更多评论
  
# re: 冒泡排序的优化算法[未登录] 2008-04-02 17:30 bird
怎么感觉比偶最初始的代码还慢啊  回复  更多评论
  
# re: 冒泡排序的优化算法[未登录] 2008-04-21 22:44 dd
我在网上看见过是抄的吧
  回复  更多评论
  
# re: 冒泡排序的优化算法 2008-04-22 12:49 
这个东西有必要抄吗?我的blog不是原创会注明转载  回复  更多评论
  
# re: 冒泡排序的优化算法 2009-02-21 22:46 怪物
不管怎样,先顶个  回复  更多评论
  
# re: 冒泡排序的优化算法 2010-07-30 11:54 fanalo
感觉有点问题
比如我输入的就是一个已经排好序的数组。
当你执行到A[K-1]和A[K]比较时,这个A[K]已经不是这个数组的元素了。。。也可能那个if成立,再给A[k]=。。。不知道会发生什么  回复  更多评论
  
# re: 冒泡排序的优化算法 2010-09-04 22:45 chjwenn@163.com
临时变量kk是多余的。。。。  回复  更多评论
  
# re: 冒泡排序的优化算法 2011-07-11 14:14 jt
说实话没觉得哪里优化了。。。我自己是这样优化的:
void swap(int &a,int &b)
{a^=b^=a^=b;}
void mp(int n) //n是范围
{
for(int i=0;i<n;i++)
{
bool ok=1;
for(int j=0;j<n-i-1;j++)
if(a[j]>a[j+1]){swap(a[j],a[j+1]);ok=0;}
if(ok)return; //如果ok未被更改过,即数组一有序,结束循环
}
}
献丑了。。有问题请指出  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理