zoukankan      html  css  js  c++  java
  • 冒泡排序以及冒泡排序的优化

    很早接触过冒泡排序法,但一直没有真正的理解,只是为了记住而学习,今天又重新看了一下,其实冒泡排序法第一次排序会把最大的冒到最上面,第二次会把次大的泡冒到最大的后面,一次类推····,另外在排序的次数上会逐渐减少。看代码:

    void bubble_sort(int *a,int n)
    {
        for(int i=0;i<n;i++)
            for(int j = 1;j<n-i;j++)
            {
                if(a[j-1]>a[j])
                    swap(&a[j-1],&a[j]);
            }
    }

    其实还可以优化一下,当发现没有进行交换证明已经排好了就跳出循环。

    void bubble_sort2(int *a,int n)
    {
        bool flag = true;
        int k = n;
        while(flag)
        {
            flag = false;
            for(int i=1;i<k;i++)
            {
                if(a[i-1]>a[i])
                {
                    swap(&a[i-1],&a[i]);
                    flag = true;
                }
            }
            k--;
        }
    }

    测试代码:

    #include <iostream>
    using namespace std;
    
    void bubble_sort(int *a,int n);
    void bubble_sort2(int *a,int n);
    
    void swap(int *a,int *b)
    {
        int tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    int main()
    {
        int a[10]={5,3,2,7,4,9,6,8,24,13};
        bubble_sort2(a,10);
        for(int i = 0;i<10;i++)
        {
            cout<<a[i]<<endl;
        }
        getchar();
        return 0;
    }
  • 相关阅读:
    sql-编程语句
    数据库语句基础3
    数据库语句 2
    sql常用的语句
    SQL语句
    锚点链接...
    sqlserver 三大范式
    sqlserver 约束
    c#SQLserver数据类型
    c#中switch语句用法
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2953788.html
Copyright © 2011-2022 走看看