• 冒泡排序算法


    冒泡排序算法的时间复杂度是什么?

    时间复杂度是O(n^2)。

     1 #include "stdafx.h"
     2 #include <iostream>
     3 using namespace std;
     4 void Swap(int &a, int &b)
     5 {
     6     int temp = a;
     7     a = b;
     8     b = temp;
     9 }
    10 
    11 void Bubble1(int *array, int length)
    12 {
    13     for (int i=length-1;i>0;--i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i>0而不是i>=0)。
    14     {
    15         for (int j=0;j<i;++j)
    16         {
    17             if (array[j]>array[j+1])  //升序(降序 < )
    18             {
    19                 Swap(array[j], array[j+1]);
    20             }
    21         }
    22     }
    23 }
    24 
    25 void Bubble2(int *array, int length)
    26 {
    27     for (int i=0;i < length - 1;++i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i < length - 1)。
    28     {
    29         for (int j=1;j < length - i;++j)
    30         {
    31             if (array[j-1]>array[j])  //升序(降序 < )
    32             {
    33                 Swap(array[j-1], array[j]);
    34             }
    35         }
    36     }
    37 }
    38 
    39 //设置标志位优化的及时终止版
    40 void Bubble3(int *array, int length)
    41 {
    42     bool swapHappend;
    43     for (int i=0;i < length - 1;++i) //首先是要比较多少趟,每一趟冒泡可以确定一个值。最后一趟只剩一个就不用比较了(所以是i < length - 1)。
    44     {
    45         swapHappend = false;
    46         for (int j=1;j < length - i;++j)
    47         {
    48             if (array[j-1]>array[j])  //升序(降序 < )
    49             {
    50                 Swap(array[j-1], array[j]);
    51                 swapHappend = true;
    52             }
    53         }
    54         if (!swapHappend)
    55             break;        
    56     }
    57 }
    58 
    59 int _tmain(int argc, _TCHAR* argv[])
    60 {
    61     int array[] = {2,9,6,3,8,5,1,4,7};
    62 
    63     /*Bubble1(array, 9);*/
    64     Bubble2(array, 9);
    65     /*Bubble3(array, 9);*/   
    66 
    67     for (int i=0;i<9;++i)
    68         cout<<array[i]<<endl;
    69 
    70     getchar();
    71     return 0;
    72 }
  • 相关阅读:
    mac升级后,遇到openssl相关问题
    mysql清空所有表
    composer 管理js css等依赖文件【fxp/composer-asset-plugin】
    php安装pcntl
    git命令
    docker
    OAuth 2.0
    mysql杯观锁与乐观锁
    mysql添加用户,授权,刷新权限
    Mac下安装SecureCRT并激活
  • 原文地址:https://www.cnblogs.com/kira2will/p/3978146.html
Copyright © 2020-2023  润新知