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

    //冒泡排序1 最普通                

    void BubbleSort(int a[], int n)
    {
       for(int i=n;i>0;i--)       //冒泡到a[i]
       {
          for(int j=1;j<i;j++)    //从a[0]开始起泡
            {
               if(a[j-1] > a[j])
               {
                  Swap(a[j-1],a[j]);
               }
            }
       }
    }
    

      

    //冒泡排序2 设置标志位

    void BubbleSort2(int a[], int n)
    {
        bool flag;
        for(int i=n;i>0;i--)
        {
            flag = 0;
            for(int j=1;j<i;j++)
            {
                if(a[j-1] > a[j])
                {
                    Swap(a[j-1],a[j]);
                    flag = 1;      //如果在一次冒泡过程中没有发现有交换,说明已排好序
                }
            }
            if(flag == 0) break;
        }
    }

    复杂度计算: 

    因为由两个for循环嵌套而得,故为O(n^2);

    稳定性:稳定。因为当相邻两个数相等时,并不交换顺序,故二者前后顺序不变


    //冒泡排序3 假设a[100],仅前10个无序,后90个已经排好序,则只需要冒泡前10个
    //需要我们记录好位置

    void BubbleSort3(int a[],int n)
    {
        int pos = n;
        int i,j;
    
        while(pos>0)
        {
            i = pos;
            pos = 0;
            for(j=1;j<i;j++)
            {
                if(a[j-1] > a[j])
                {
                    Swap(a[j-1],a[j]);
                    pos = j;
                }
            }
        }
    }
  • 相关阅读:
    linux_shell_入门
    Linux下安装jdk
    Linux杂记
    Linux常用命令
    Java 性能优化的五大技巧
    Java异常处理的9个最佳实践
    Java面试:投行的15个多线程和并发面试题
    敏捷持续集成详解
    gitlab系列详解
    git系列讲解
  • 原文地址:https://www.cnblogs.com/dzy521/p/9374570.html
Copyright © 2011-2022 走看看