冒泡排序(C++实现)

2017-09-22  本文已影响0人  曲谐_

冒泡排序简介:

代码实现

基础冒泡排序

#include<iostream>
using namespace std;
int main()
{
    int a[9] = {1,9,2,5,8,3,7,4,6};
    int i,j;
    for(i=0;i<9;i++)
    {
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}

这种冒泡排序无论如何都要执行两层循环,因此无论最优最差时间复杂度均为O(n^2)。

改良版冒泡排序

//只完成一轮循环的冒泡排序
#include<iostream>
using namespace std;
int main()
{
    int a[9] = {9,8,7,6,5,4,3,1,2};
    int i,j;
    for(i=0;i<9;i++)
    {
        bool flag = false;
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
                flag = true;
            }
        }
        if(flag == false)
            break;
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读