• Java冒泡排序


    我的个人主页☆光之梦☆_C语言基础语法(超详细),【java入门】语法总结-CSDN博客

    你的 👍点赞 ⭐收藏 📝评论   是对博主最大的支持与鼓励喔

    我的专栏C语言基础语法(超详细)_☆光之梦☆的博客-CSDN博客(这个专栏里的平均文章质量分是95噢,基本全都是高质量文章,本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下,收藏绝对不亏噢)

    目录

    一、Arrays 类

    常用集合方法

    第一个:将数组元素拼接为带有格式的字符串

    第二个:比较两个数组内容是否相同

    第三个: 查找元素在数组中的索引 (二分查找法)

    第四个: 对数组进行默认升序排序

    二、冒泡排序

    2.1 冒泡排序介绍

    2.2 冒泡排序图例

    2.3 代码实现思路

    2.4 冒泡排序(超详细解析)


    一、Arrays 类

    Arrays:数组操作工具类,专门用于操作数组元素

    方法名说明
    public static String toString(类型[] a)将数组元素拼接为带有格式的字符串
    public static boolean equals(类型[] a, 类型[] b)比较两个数组内容是否相同
    public static int binarySearch(int[] a, int key)查找元素在数组中的索引 (二分查找法)
    public static void sort(类型[] a)对数组进行默认升序排序

    常用集合方法

    第一个将数组元素拼接为带有格式的字符串

    public static String toString(类型[ ] a)

    1. public class ArraysDemo {
    2.    public static void main(String[] args) {
    3.        int[] arr1 = {11,22,33,44,55};
    4.        //将数组元素拼接为带有格式的字符串
    5.        System.out.println(Arrays.toString(arr1));
    6.   }
    7. }

    运行结果:

    [11, 22, 33, 44, 55]

    第二个比较两个数组内容是否相同

    public static boolean equals(类型[] a, 类型[] b)

    1. public class ArraysDemo {
    2.    public static void main(String[] args) {
    3.        int[] arr1 = {11,22,33,44,55};
    4.        int[] arr2 = {11,22,33,44,55};
    5.        //比较两个数组的内容是否相同
    6.        System.out.println(Arrays.equals(arr1,arr2));
    7.   }
    8. }

    运行结果:

    true

    第三个 查找元素在数组中的索引 (二分查找法)

    public static int binarySearch(int[] a, int key)

    二分查找法:保证数组的元素是排好序的,不然它给你返回的索引就是错误的)。如果查找的元素,在数组中不存在:返回(-(插入点)-1

    注:用这个来查找,必须保证你的元素在一开始就是排好序的,不然就算你之后先排好序再调用binarySearch这样查找后的索引也还是错的,因为你排序改变了它最初的位置。所以要使用binarySearch你的元素必须在一开始就是排好顺序的

    1. public class ArraysDemo {
    2.    public static void main(String[] args) {
    3.        int[] arr1 = {11,22,33,44,55};
    4.        int[] arr2 = {11,22,33,44,55};
    5.        //查找元素在数组中的索引
    6.        System.out.println(Arrays.binarySearch(arr1,33));
    7.        System.out.println(Arrays.binarySearch(arr2,66));
    8.   }
    9. }

    运行结果:

    1. 2
    2. -6

    插入点指的是:你的索引位置

    也就是说如果66存在,那么按照排序它应该会出现在55后面,也就是5

    所以:-(5)-1 = -6

    第四个: 对数组进行默认升序排序

    public static void sort(类型[] a)

    1. public class ArraysDemo {
    2.    public static void main(String[] args) {
    3.        
    4.        int[] nums = {22,11,55,44,33};
    5.        
    6.        //对数组进行默认升序排序
    7.        Arrays.sort(nums);
    8.        System.out.println(Arrays.toString(nums));
    9.   }
    10. }

    运行结果:

    [11, 22, 33, 44, 55]

    二、冒泡排序

    2.1 冒泡排序介绍

    相邻的两个数进行比较, 如果第一个比第二个大, 就交换他们两个

    也就是说:把第一个元素与第二个进行比较,比出最大的那个(如果第一个大,那就把第二个数与第一个数互换位置,如果第二个大那就位置不变),然后拿第二个去和第三个元素进行比较,以此类推,那么最后的元素应该会是最大的数。

    对所有的元素重复以上的步骤,除了最后一个,即需要进行length-1次。

    第一次是对n个数进行n-1次比较,进行到最后第n个的一个是最大的;

    第二次是对n-1个数进行n-2次比较,进行到最后第n-1个的一个是最大的;

    第一轮:可以选出最大值

    第一轮 : arr[0]-arr[1] arr[1]-arr[2] arr[2]-arr[3] arr[3]-arr[4] 比较4次

    2.2 冒泡排序图例

    五个元素只需比较四轮

    第一轮 : arr[0]-arr[1] arr[1]-arr[2] arr[2]-arr[3] arr[3]-arr[4] 比较4次

    第二轮 : arr[0]-arr[1] arr[1]-arr[2] arr[2]-arr[3] 比较3次

    第三轮 : arr[0]-arr[1] arr[1]-arr[2] 比较2次

    第四轮 : arr[0]-arr[1] 比较1次

    2.3 代码实现思路

    外循环来控制比较的轮数,用内循环来控制比较的次数

    我们写这个循环嵌套,主要是想实现这个比较的过程。而在比较的过程当中,我需要拿到数组里面的元素来挨个做比较,那么需要拿到数组里的元素,是不是就需要进行遍历数组呀

    注:千万不要去背代码,只要你把这个思路记住了什么时候你都能写得出来

    2.4 冒泡排序(超详细解析)

    1. public class BubbleSort {
    2.    public static void main(String[] args) {
    3.        //冒泡排序算法:相邻的两个数进行比较,如果第一个比第二个大, 就交换他们两个
    4.        int[] arr = {22,55,44,33,11};
    5.        //快捷方式:arr.fori
    6.        //arr:数组名
    7.        //外循环:控制比较的轮数
    8.        for (int i = 0; i < arr.length - 1 ; i++) {
    9.            //arr.length 比较0,1,2,3,4   5次
    10.            //但是我们只需要比较4次,所以是 arr.length - 1
    11.            //内循环:控制比较的次数
    12.            //-1:避免索引越界 (每次都比较4次)
    13.            //-i:提升代码效率 (比较次数递减)
    14.            for (int j = 0; j < arr.length-1-i; j++) {
    15.                // j = 0 1 2 3 4
    16.                // j = 0       arr[0] arr[1]
    17.                // j = 1       arr[1] arr[2]
    18.                //……
    19.                // j = 3       arr[3] arr[4]
    20.                // j = 4       arr[4] arr[5]
    21.                //这时会出现索引越界的情况,所以 j 不能取到4
    22.                //所以要把内循环的循环次数也要进行-1   所以是:j
    23.                //arr[j] 是在左边,arr[j+1]在右边
    24.                if(arr[j] > arr[j+1]){
    25.                    //三角交换
    26.                    //定义一个临时变量temp用来进行数据的交换
    27.                    int temp = arr[j];
    28.                    arr[j] = arr[j+1];
    29.                    arr[j+1] = temp;
    30.               }
    31.           }
    32.       }
    33.        //打印输出排序后的数组,检验是否排序正确
    34.        System.out.println(Arrays.toString(arr));
    35.   }
    36. }

    冒泡排序·简

    1. public class BubbleSort {
    2.    public static void main(String[] args) {
    3.        //冒泡排序算法:相邻的两个数进行比较,如果第一个比第二个大, 就交换他们两个
    4.        int[] arr = {22,55,44,33,11};
    5.        //外循环:控制比较的轮数
    6.        for (int i = 0; i < arr.length - 1 ; i++) {
    7.            //内循环:控制比较的次数
    8.            //-1:避免索引越界 (每次都比较4次)
    9.            //-i:提升代码效率 (比较次数递减)
    10.            for (int j = 0; j < arr.length-1-i; j++) {
    11.                
    12.                if(arr[j] > arr[j+1]){
    13.                    //三角交换
    14.                    int temp = arr[j];
    15.                    arr[j] = arr[j+1];
    16.                    arr[j+1] = temp;
    17.               }
    18.           }
    19.       }
    20.        
    21.        System.out.println(Arrays.toString(arr));
    22.   }
    23. }

     如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,共同进步。 

  • 相关阅读:
    【Java实战】工作中如何规范定义Java常量
    Vue通知提醒框(Notification)
    2022.9.2 OpenCV课程群思考题
    机器学习——DBSCAN聚类算法
    【前端】JavaScript
    期末前端web大作业——名侦探柯南网页制作 Hbuiderx制作网页 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
    Linux 常用工具
    基于STC12C5A60S2系列1T 8051单片机实现串口调试助手软件与单片机相互发送数据的RS485通信功能
    深入探索Java SPI机制-动态扩展的艺术
    基于单片机的恒流开关电源 BUCK电路设计
  • 原文地址:https://blog.csdn.net/qq_72707720/article/details/133758453