zoukankan      html  css  js  c++  java
  • 排序算法之冒泡排序

    一、原理

    1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

    2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点上,最后的元素即是最大的数。

    3、针对所有元素重复以上的步骤,除了最后一个。

    4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    二、代码实现

    package com.jdk8.SortTest;
    
    public class BubbleSort {
        public static void main(String[] args){
            int[] params = new int[]{1,9,5,2,7,4,3,8};
            System.out.println("排序前的数据为:");
            display(params);
            bubbleSorted(params);
            System.out.println("排序后的数据为:");
            display(params);
        }
    
        public static void display(int[] arrays){
            for(int i = 0;i < arrays.length;i++){
                System.out.print(" " +  arrays[i] + " ");
            }
        }
    
        private static void bubbleSorted(int[] params) {
            if(null == params || params.length < 1){
                return ;
            }
            int param = 0;
            for(int i = 0;i < params.length;i++){
                for(int j = i + 1;j < params.length;j++){
                    if(params[i] > params[j]){
                        param =  params[i];
                        params[i] = params[j];
                        params[j] = param;
                    }
                }
            }
            System.out.println();
        }
    }
    

    运行结果如下:

    排序前的数据为:
     1  9  5  2  7  4  3  8 
    排序后的数据为:
     1  2  3  4  5  7  8  9 
    

    三、复杂度分析

    3.1、时间复杂度分析

    ​ 时间复杂度:时间复杂度是一个函数,定量描述了算法的运算时间,用大O符号来表示。在计算的时候,先找算法基本操作的执行次数,即为T(n),然后找到它的数量级,为f(n),如果T(n)与f(n)的比值求极限可得到一个常数c,则时间复杂度T(n) = O(f(n))。

    ​ 分析:冒泡排序,可以分为以下三个规则的组合:

    ​ 1) 外层for循环。

    ​ 2) 内层for循环。

    ​ 3) 判断比较和交换位置。

    ​ 因此,冒泡排序的时间复杂度为:O(n) * O(n) * O(1) = O(n^2) 。

    3.2 、空间负责度

    ​ 空间复杂度:空间复杂度是运行完一个程序所需要的内存的大小。即包括了存储算法本身所需要的空间,输入与输出数据所占空间,以及一些临时变量所占用的空间。一般而言,只比较额外空间,来比较算法的空间优越性。

    ​ 冒泡排序的临时变量所占用的空间不随处理数据n的大小改变而改变,即空间复杂度为O(1)。

    四、稳定性

    ​ 冒泡排序是稳定排序。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 阮小二买彩票
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    让程序后台隐藏运行
    只要你喜欢,并且可以养家糊口,就是好的
  • 原文地址:https://www.cnblogs.com/ITBlock/p/10349364.html
Copyright © 2011-2022 走看看