排序01-冒泡排序法

常见的算法题:排序

排序分为很多种类,最常见的有冒泡排序法,简单排序法,直接插入排序法等几种排序法;

冒泡排序法,是排序中最简单和最常见的排序法。

冒泡排序法是将相邻的元素两两进行比对,将逆序的元素进行交换就行。

 时间复杂度:O(n^2)

 

 代码如下:

复制代码
public class BubbleSort {
    public static void main(String[] args) {
//        int[] arr = {2,8,5,7,3,1,10,11,6};
        int[] arr = {2,3,5,7,8,1,10,11,6};
        System.out.println(Arrays.toString(arr));
        bubbleSort01(arr);
    }
    //通用,用于数据交换
    public static void swap(int[] arr , int i ,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    //冒泡排序法:方法一
    public static void bubbleSort01(int[] arr){
        int i,j;
        boolean flag = true;
        for( i=0 ; i<arr.length && flag ; i++ ){
            flag = false ;//每次都调整成为false,如果一遍遍历后,没有变成true,那说明没有
            for( j=arr.length - 2 ; j > i-1 ; j-- ){
                if(arr[j] > arr[j+1] ){
                    flag = true;
                    swap( arr , j , j+1 );
                }
            }
            System.out.println(Arrays.toString(arr));
        }
    }
    //冒泡排序法:方法二
    public static void bubbleSort02(int[] arr){
        int i,j;
        boolean flag = true;
        for( i=1 ; i<arr.length && flag ; i++ ){
            flag = false ;//每次都调整成为false,如果一遍遍历后,没有变成true,那说明没有
            for( j = 0; j < arr.length - i  ; j++ ){
                if(arr[j] > arr[j+1] ){
                    flag = true;
                    swap( arr , j , j+1 );
                }
            }
            System.out.println(Arrays.toString(arr));
        }
    }
}
复制代码

 

第二种冒泡方法遍历为例:

第一轮排序

 

 第二轮排序

 

 第三轮排序

 

说明:

设置标识flag,在每一轮遍历之前,将值设置成false;

如果进行了交换,设置为true,如果没有则不变(说明剩下的元素是有序的,不用进行排序);

如果flag为true,则再次进行遍历,否则结束遍历;

 

 












posted @   PerfectLi  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示