zoukankan      html  css  js  c++  java
  • 冒泡排序算法

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

    时间复杂度是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 }
  • 相关阅读:
    青蛙学Linux—Nginx配置文件详解
    ICEM二维网格
    ubuntu画面延迟问题解决
    plot over time
    fluent中UDF环境变量问题的三种解决方法
    stiff chemistry模型出现NaN错误
    壁面边界漏给条件引起的发散问题
    mfix添加文件后重新生成configure文件
    DEM反应不收敛问题
    多气体组分DEM流动的DMP并行内存错误
  • 原文地址:https://www.cnblogs.com/kira2will/p/3978146.html
Copyright © 2011-2022 走看看