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

    #include <iostream>
    #define N 10
    using namespace std;
    void swap(int &a,int &b)
    {
    //   a = a + b;
    //   b = a - b;
    //   a = a - b;
         a ^= b;
         b ^= a;
         a ^= b;
    }
    void BubbleSort1(int *a)
    {
       int i,j;
       for(i = 0;i < N-1;i++)
       {
          for(j = i+1;j < N;j++)
          {
             if(a[i] >= a[j])
             {
                swap(a[i],a[j]);
             }
          }
       }
       for(i = 0;i < N;i++)
       {
          cout << a[i] << " ";
       }
       cout << endl;
    }
    
    void BubbleSort2(int *a)
    {
       for(int i = 0;i < N;i++)
       {
          for(int j = N-2;j >= i;j--)
          {
             if(a[j] > a[j+1])
             {
                swap(a[j],a[j+1]);
             }
          }
       }
       for(int i = 0;i < N;i++)
       {
          cout << a[i] << " ";
       }
       cout << endl;
    }
    
    void BubbleSort3(int *a)
    {
       bool flag = 1;
       for(int i = 0;i < N-1 && flag; i++)
       {
          bool flag = 0;
          for(int j = N-2;j >= i;j--)
          {
             if(a[j] > a[j+1])
             {
                flag = 1;
                swap(a[j],a[j+1]);
             }
          }
       }
       for(int i = 0;i < N;i++)
       {
          cout << a[i] << " ";
       }
       cout << endl;
    }
    
    int main()
    {
       int a[N] = {2,1,5,3,4,10,6,9,8,7};
       BubbleSort1(a);
       BubbleSort2(a);
       BubbleSort3(a);
       return 0;
    }
    

      冒泡排序的复杂度分析:

        最好的情况,也就是要排序的表本身是有序的,那么我们比较次数,根据最后改进的代码,可以判断出也就是 n-1 次的比较,没有数据交换,时间复杂度为O[n];

        最坏需要的情况,即待排序的表是逆序的情况,此时需要比较n(n + 1)/2次,因此总的时间复杂度为O[n^2].

  • 相关阅读:
    二级缓存配置和原理
    延迟加载
    proxy和no-proxy的策略取值的区别
    inverse理解
    Java Spring mvc 操作 Redis 及 Redis 集群
    章节6 关联映射 (转载)
    8.28笔记
    8.26函数相关练习
    8.26 课堂自由笔记 还有考皮的老师笔录
    大话设计模式1.0.2-----策略模式 单一职责原则 和 开放-封闭原则
  • 原文地址:https://www.cnblogs.com/devinblog/p/4552457.html
Copyright © 2011-2022 走看看