首页 > 编程语言 > 详细

经典算法回顾冒泡排序【交换排序】

时间:2015-03-26 22:43:00      阅读:219      评论:0      收藏:0      [点我收藏+]

算法思想:对n个数进行排序,需进行n-1趟排序,每次归位一个数。

每次比较两个相邻的元素,如果他们的顺序错误,就把它们交换过来。

复杂度:O(N2)

 

优化:记录是否发生交换(true:是,false:否)

算法代码:

#include "stdafx.h"
#include <iostream>
#include <algorithm>
using namespace std;

void BubbleSort(int unsorted[],int size)
{
    bool flag = true;
            
     while(flag)
    {
        for(int i = 0; i < size-1; ++i)//n-1次排序
        {
            flag = false;
            for(int j=1; j<size-i; j++)//!!!注意i和j的范围!!
            {
                if(unsorted[j-1] > unsorted[j])
                {

                    swap(unsorted[j-1],unsorted[j]);//是对j,而不是i
                    flag = true;
                 }
            }
            if(!flag)
                return;
         }
    }
}

int  main()
{
    int unsorted[] = {3,6,1,4,5};
    int length = sizeof(unsorted)/sizeof(int);

    for(int i=0;i<length;++i)
       cout<<unsorted[i]<<" ";
    cout<<endl;

    BubbleSort(unsorted,length);

    for(int i=0;i<length;++i)
        cout<<unsorted[i]<<" ";
    cout<<endl;

    return 0;
}

  

经典算法回顾冒泡排序【交换排序】

原文:http://www.cnblogs.com/dreamrun/p/4369986.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!