那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

常见排序算法的实现(四)-冒泡排序

冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.因此,复杂度在最坏的情况下是O(N ^ 2).

void  Swap( int   * a,  int   * b)
{
    
int  temp;

    temp 
=   * a;
    
* a    =   * b;
    
* b    =  temp;
}


//  冒泡排序
void  BubbleSort( int  array[],  int  length)
{
    
//  记录一次遍历中是否有元素的交换
     bool  exchange;
    
for  ( int  i  =   0 ; i  <  length;  ++ i)
    
{
        exchange 
=   false ;
        
for  ( int  j  =  i  +   1 ; j  <  length;  ++ j)
        
{
            
if  (array[j]  <  array[i])
            
{
                exchange 
=   true ;
                Swap(
& array[j],  & array[i]);
            }

        }

        
//  如果这次遍历没有元素的交换,那么排序结束
         if  ( false   ==  exchange)
            
break ;
    }

}

posted on 2006-07-04 00:36 那谁 阅读(1034) 评论(2)  编辑 收藏 引用 所属分类: 算法与数据结构

评论

# re: 常见排序算法的实现(四)-冒泡排序   回复  更多评论   

算法好像有问题啊!
if (array[j] < array[i])
{
exchange = true ;
Swap( & array[j], & array[i]);
}
应该改成:
if (array[j] < array[j-1])
{
exchange = true ;
Swap( & array[j], & array[j-1]);
}
2007-10-14 00:41 | 游客

# re: 常见排序算法的实现(四)-冒泡排序   回复  更多评论   

呵呵。的确,似乎和选择排序搞起来了
2008-04-17 19:44 | MATRIX

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理