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

    冒泡排序法是一种相邻数据交换的排序方法。基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就像气泡在水中向上浮一样。

    /*--------完整代码@映雪--------*/
    
    #include <iostream>
    using namespace std;
    void BubbleSort(int a[],int n)/*冒泡排序*/
    {
        int i,j,temp;
        for(i=0;i<n;i++)
            for(j=n-1;j>i;j--)
            {
                if(a[j-1]>a[j])
                {
                    temp=a[j];
                    a[j]=a[j-1];
                    a[j-1]=temp;
                }
            }
    }
    int main()
    {
        int a[]={3,12,7,32,7833,22,11,8,99,55};
        BubbleSort(a,sizeof(a)/sizeof(int));
        for(int i=0;i<sizeof(a)/sizeof(int);i++)
        {
            cout<<a[i]<< " ";
        }   
        return 0;
    }

    改进算法:设置一个标志变量flag,在每一遍扫描之前将其设置为0,在扫描过程中,若有数据交换,则设置其值为1.在一遍扫描完成之后,判断flag的值,若其值为0,表示在这一遍扫描中已经没有数据进行交换,就不需要进行后续扫描。

    /*----改进的冒泡排序-------*/
    void BubbleSort(int a[],int n)/*冒泡排序*/
    {
        int temp,flag=0;
        for(int i=0;i<n-1;i++)/*需要n-1次扫描*/
         {
                for(int j=n-1;j>i;j--)
            {
                if(a[j-1]>a[j])
                {
                    temp=a[j];
                    a[j]=a[j-1];
                    a[j-1]=temp;
                    flag=1;   
                }
                
            }
            if(flag==0)
            break;
            else
            flag=0;
         }
            
    }
  • 相关阅读:
    2013-9-29 通信原理学习笔记
    《大数据时代》阅读笔记
    《人人都是产品经理》阅读笔记一
    2013-8-13 信道接入技术研究学习
    2013-8-6 ubuntu基本操作
    2013-7-30 802.1X企业级加密
    2013-7-29 杂记
    2013-7-28 802.11n帧聚合
    2013-7-27 802.1X学习
    vue+node+mongoDB前后端分离个人博客(入门向)
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5262095.html
Copyright © 2011-2022 走看看