冒泡排序 - ZHI-BLOG
LaTeX Rendering with MathJax
侧边栏壁纸

冒泡排序

2024年09月05日 101阅读 2评论 0点赞
s

冒泡排序

for 没优化 On²n²n²

int main
{
    int n = 10;
    int a151515 = {0,10,9,8,7,6,5,4,3,2,1};
    forinti=1;i<n;i++int i = 1 ; i < n ; i ++inti=1;i<n;i++
    {
        forintj=1;j<n;j++int j = 1 ; j < n ; j ++intj=1;j<n;j++
        {
            ifa[j]>a[j+1]a[j] > a[j + 1]a[j]>a[j+1]
            { 
                swapa[j],a[j+1]a[j] , a[j + 1]a[j],a[j+1];
            }
        }
    }
    for inti=1;i<=n;i++int i = 1; i <= n ; i ++inti=1;i<=n;i++
    {
        cout << aiii << ' ';
    }
    return 0;
}

优化后for 最优条件下最优条件下最优条件下Onnn

int main
{
    int n = 10;
    int a151515 = {0,10,9,8,7,6,5,4,3,2,1};
    forinti=1;i<n;i++int i = 1 ; i < n ; i ++inti=1;i<n;i++
    {
        bool b = true;
        for(int j = 1 ; j < n ; j ++)
        {
            if(a[j] > a[j + 1])
            { 
                swap(a[j] , a[j + 1]);
                b = false;
            }
        }
        if(b) break;
    }
    for (int i = 1; i <= n ; i ++)
    {
        cout << a[i] << ' ';
    }
    return 0;
}

优化后 while 最优情况下 O(n)

int main()
{
    int n = 10;
    int a[15] = {0,10,9,8,7,6,5,4,3,2,1};
    bool b;
    do
    {
        b = false;
        for(int j = 1 ; j < n ; j ++)
        {
            if(a[j] > a[j + 1])
            { 
                swap(a[j] , a[j + 1]);
                b = true;
            }
        }
    }
    while(b);
    
    for (int i = 1; i <= n ; i ++)
    {
        cout << a[i] << ' ';
    }
    return 0;
}
0
打赏

—— 评论区 ——

昵称
邮箱
网址
取消
  1. @
    头像
    刘郎
    GNU/Linux x64 GNU/Linux x64   Google Chrome 127 Google Chrome 127

    swap函数和cout貌似没有定义哦 还有main函数的返回类型不应该是int吗😳

    1. @
      头像
      ZHWEI
      @刘郎
      博主
      Windows 10 x64 Edition Windows 10 x64 Edition   Microsoft Edge 129 Microsoft Edge 129

      就是我们学的时候都有加using namespace std;所以就默认有了 没复制全部的代码
      然后没理解“还有main函数的返回类型不应该是int吗”QQ

人生倒计时
舔狗日记