首页 > 编程语言 > 详细

冒泡排序

时间:2020-03-10 01:29:31      阅读:75      评论:0      收藏:0      [点我收藏+]

  冒泡排序(Bubble Sort)

    冒泡排序是一种简单的排序算法。它适合小规模数据的排序,并且其效率比较低,入门级算法。

  基本思想

    冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。

   算法描述

  1. 比较相邻的元素,如果前一个比后一个大,交换之。
  2. 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
  3. 第二趟将第二大的数移动至倒数第二位
    ......
    因此需要n-1趟;

     
    技术分享图片
     
    代码实现
    public void BubbleSort(int[] arr){
            for(int i=0;i<arr.length-1;i++){ 
                for(int j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){ //相邻两个元素作比较,如果前面元素大于后面,进行交换
                        int temp = arr[j+1];
                        arr[j+1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
        }

     

    冒泡排序复杂度分析

    分析一下它的时间复杂度。当最好的情况,也就是要排序的表本身就是有序的,那么我们比较次数,那么可以判断出就是n-1次的比较,没有数据交换,此时时间复杂度为O(n)。

    当最坏的情况,即待排序是逆序的情况,此时需要比较

     技术分享图片 次,此时时间复杂度为 技术分享图片 。

     

     

     

     

     

  

冒泡排序

原文:https://www.cnblogs.com/ityangshuai/p/12452537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!