栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

冒泡排序算法详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

冒泡排序算法详解

冒泡排序算法笔记

基本思想代码示例二、复杂度分析总结


基本思想

给定一个长度为N的数组arr,在每一趟遍历时,比较两个相邻的元素,若元素顺序不正确,则交换两个元素的位置,继续向下遍历,因此,每一趟都会有一个最大或最小的值,像冒泡一样,被赶到序列起点或终点,执行N-1次遍历后,即可得到一个排好序的序列arr。

代码示例
import java.util.Arrays;
import java.util.Random;


public class BubbleSort {
    public static void bubbleSort(int[] arr){
        //若数组为空或小于两个值,则默认有序退出
        if (arr == null || arr.length < 2){
            return;
        }
        for(int i = 0;i arr[j+1]){
                    swap(arr,j,j+1);
                }
            }
        }
    }

    
    public static void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    
    public static int[] generateRandomArray(int maxSize,int maxValue){
        Random random = new Random();
        int[] arr = new int[(int) random.nextInt(maxSize+1)];
        for(int i = 0;i 

细节
外循环:对于一个长度为N的数组,每一趟确定一个值,因此还是需要N-1趟
内循环:
            内循环(从小到大):每次都是从0开始,终点为N-i-1,   减i是因为每趟都会确定一个值,减1是因为数组从0开始。
            内循环(从大到小):每次都是从N-1开始,减1是因为数组从0开始,arr[N]会越界。终点为i>0.

二、复杂度分析

时间复杂度:
          第一趟执行N-1次比较
          第二趟执行N-2次比较
          …
          第N-1趟执行1次比较
等差数列求和,总的比较次数为(N-1)+(N-2)+…+2+1,因此时间复杂度为O( N 2 N^{2} N2)

空间复杂度:
          只用到了有限个常熟级空间,因此空间复杂度为O(1)

总结

留下笔记,只为方便回忆,如有侵权,还请联系,如有错误,还请纠正。陆续更新,还请关注。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号