美文网首页
交换排序之冒泡排序

交换排序之冒泡排序

作者: 你的昵称在简书中已被使用 | 来源:发表于2020-04-27 19:58 被阅读0次

1、比较方法:先相邻的两个相比,大的放后面,把这一行都比完,最后一个数一定是最大的,然后第二次按此规则比较前length-1个,第二大的数放到了倒数第二个位置,以此类推,最后剩两个数未比大小时,只需最后比较一下他俩。
2、图解


图片来自网络

3、代码演示


import java.util.Arrays;

public class MaoPaoSort  {

    public static int[] sort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            //比如十个数比九次
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int arr[]={9,8,7,6,5,4,3,2,1};
        System.out.println(Arrays.toString(sort(arr)));
    }
}

3'、代码优化

  public static int[] sort1(int[] arr){
        boolean flag=true;
        for(int i=0;i<arr.length-1;i++){
            //比如十个数比九次
            for(int j=0;j<arr.length-i-1;j++){
//加个🚩判断是否排好,不过代码量增加
                flag=true;
                if(arr[j]>arr[j+1]){
//这样不用临时变量就可以直接更改值,但是可能出现越界
                   arr[i]=arr[i]+arr[j];
                   arr[j]=arr[i]-arr[j];
                   arr[i]=arr[i]-arr[j];
                    flag=false;
                }
            }
            if(flag){break;}
        }
        return arr;
    }

4、时间复杂度
未优化前:
最好时间复杂度:O(n2)
最坏时间复杂度:O(n2)
平均时间复杂度:O(n2)
优化后:
最好时间复杂度:O(n)
最坏时间复杂度:O(n2)
平均时间复杂度:O(n2)
5、空间复杂度
优化前O(1)
优化后O(0)
有人会说这个空间复杂度能降到0,因为空间复杂度主要是看使用的辅助内存,如果没有辅助内存变量,那么可以说空间复杂度为0;所以该算法中空间复杂度一般是看交换元素时所使用的辅助空间;
6、稳定性
稳定的

相关文章

  • 排序算法之交换排序

    利用交换数据元素的位置进行排序的方法称为交换排序。常见的交换排序方法有冒泡排序和快速排序。 1. 冒泡排序 1.1...

  • 排序算法

    排序算法 冒泡排序 选择排序 直接插入排序 希尔排序 堆排序 归并排序 快速排序 冒泡排序 冒泡排序是一种交换排序...

  • 冒泡排序

    冒泡排序,属于内部排序中的交换排序。

  • 【数据结构】【C#】019-交换类排序:🌓冒泡排序(稳定)(重要

    交换排序:冒泡排序 ( 相邻比序法 )(稳定) 冒泡排序是一种简单的交换类排序方法,它是通过相邻的数据元素的交换,...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 交换排序法

    交换排序法是指借助于数据元素之间的相互交换进行排序的一种方法。冒泡排序与快速排序法都属于交换排序法。 冒泡排序法的...

  • iOS - 冒泡排序

    Demo_github 冒泡排序 冒泡排序(Bubble Sort)是一种交换排序。两两比较待排序的关键字,并交换...

  • 排序算法

    冒泡排序 选择排序 插入排序二分插入排序希尔排序 堆排序 归并排序 快速排序 交换排序类:冒泡排序快速排序 选择排...

  • 排序算法

    冒泡排序 选择排序 元素交换的方式

  • 冒泡算法/选择排序算法/直接插入排序算法C语言实现

    排序算法 冒泡排序 选择排序 冒泡排序和选择排序的核心思路: 冒泡排序是:相邻两个元素两两进行比较,小则交换位置。...

网友评论

      本文标题:交换排序之冒泡排序

      本文链接:https://www.haomeiwen.com/subject/enfjwhtx.html