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

    冒泡排序:

    概述:

    1.从首元素开始,依次比较相邻的两个数。

    2.如果前一个数大于后一个数,就进行交换,这样就把比较大的数放在了右边的位置上。

    3.依次比较,直到最大的数在数组的尾部(即倒数第二个数和倒数第一个数比较完)。

    4.重复上述步骤,此时数组尾部为倒数第二个元素。以此类推。

    稳定性:

    冒泡是个稳定算法。

    时间复杂度:

    平均时间复杂度为:O(N²)。

    因为冒泡排序你始终都要从第一个元素遍历到最后一个元素,进行相邻元素的比较,第一个元素比较N次到达末尾,第二个比较N-1次...

    所以总共是N+(N-1)+(N-2)+...+1=(1+N)*N/2,最高项为N²,所以时间复杂度为O(N²).

    代码:

    #include <iostream>
    using namespace std;
    //用模板整型和浮点型都可以使用
    template<typename T>
    void BubbleSort(T array[],int len)
    {
        if (len < 2)
        {
            return;
        }
        int i, j;
        //j从数组末尾开始,i一直遍历到j,相邻比较,如果当前大于后一个元素就交换
        //遍历一遍后j--,说明最大数已经到了数组末尾,下一次选出次大数放在倒数第二个位置,所以j--
        for (j = len - 1; j >= 0; j--)
            for (i = 0; i < j; i++)
            {
                if (array[i] > array[i + 1])
                {
                    int temp = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = temp;
                }
            }
    }
    int main()
    {
        int arr[10] = { 2, 4, 1, 1, 3, 7, -9, 7, 8, 8 };
        BubbleSort(arr, 10);
        for (int i = 0; i < 10; i++)
        {
            cout << arr[i] << " ";
        }
        return 0;
    }
  • 相关阅读:
    域名交易网
    android canvas 二
    android 获取当前时间
    loadrunner 面向目标的场景load Generator 连接 失败
    开发平台
    java 调用 bat 如果里面用了第三方命令 dos 窗口没有关闭 解决方法
    Socket网络框架 MINA
    JQuery引用
    Jmeter
    android 获取 service 信息
  • 原文地址:https://www.cnblogs.com/love-jelly-pig/p/8342319.html
Copyright © 2011-2022 走看看