• 冒泡排序以及冒泡排序的优化


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

    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;
    }
  • 相关阅读:
    hdu5514 非2的次幂容斥原理
    「NOIP2015」斗地主
    「NOIP2009」靶形数独
    「CF521D」Shop
    「HNOI2015」菜肴制作
    「NOIP2011」观光公交
    「NOI2015」荷马史诗
    「JSOI2007」建筑抢修
    「CF161B」Discounts
    叠罗汉
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2953788.html
Copyright © 2020-2023  润新知