C++实现冒泡排序法

冒泡排序法是一种经典的排序方法,虽然其效率较低,时间复杂度为O( n2 n 2 ),仅适用于数据规模较小的排序。但作为一种经典排序方法,还是应当学习掌握。
下面Jungle用C++实现两种冒泡排序法:
①传统的冒泡排序法sort_Bubble:内外两轮循环,前后两个数据依次比较;
②改进的冒泡排序法sort_Bubble2:同样是内外两次循环,但用一个标记来标识当前这一轮是否发生数据交换,如果没发生,说明排序实际上已经完成,可以提前结束排序任务。

void swapValue(int*a , int* b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

void sort_Bubble(int arr[],int N)
{
    /// step用于统计比较次数
    int step = 0;
    for(int i=0;ifor(int j=0;j1;j++)
        {
            step++;
            if(arr[j]>arr[j+1])
                swapValue(arr+j,arr+j+1);
        }
    }
    cout<<"sort_Bubble:"<void sort_Bubble2(int arr[],int N)
{
    /// step用于统计比较次数
    int step = 0;
    bool changeFlag = true;
    for(int i=0;iif(changeFlag == false)
            break;
        changeFlag = false;
        for(int j=0;j1;j++)
        {
            step++;
            if(arr[j]>arr[j+1])
            {
                swapValue(arr+j,arr+j+1);
                changeFlag = true;
            }
        }
    }
    cout<<"sort_Bubble2:"<int _tmain(int argc, _TCHAR* argv[])
{
    int tmpArray[10] = {0,-3,12,234,9,45,99,123,401,990};
    int tmpArray2[10] = {0,-3,12,234,9,45,99,123,401,990};
    for(int i=0;i<10;i++)
        cout<"\t";
    cout<<"\n冒泡排序法:"<10);
    sort_Bubble2(tmpArray2,10);
    for(int i=0;i<10;i++)
        cout<"\t";

    getchar(); 
    return 0;
}

运行结果:
C++实现冒泡排序法_第1张图片
可以看到,改进的冒泡排序法大大减少了程序的运行次数。

你可能感兴趣的:(数据结构与算法,C++应用)