Array-冒泡(笔记)

4.Arrays

学习Arrays前先学一下了解冒泡排序

4.1冒泡排序

要想知道什么是冒泡排序首先得知道什么是排序

排序:将一组数据按照固定的规则进行排列

例如:123456它们就是按照从小到大的规则排列好的数据

冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,一次对所有数据进行操作,直至所有数据按要求完成排序。

使用一个场景演示冒泡排序的规则:

这里有五个人,它们的身高163.171.130.81.168

接下来我们要对他们由低到高进行排序,也就是说171最后会出现在最右边,81会出现在最左边。

怎么实现呢?

我们将使用我们刚才说过的冒泡排序的规则进行实现:

冒泡规则说了两两比较大的往后放,首先163和171进行比较

163小于171所有位置不变

接下来171和130比较,171大于130所以171和130位置进行交换

然后171和81进行比较171大于81所以它们的位置也进行交换

然后171和168进行比较,171大于168,所以171和168的位置也进行交换

这个操作做完之后,171的位置就出现在了最右边的位置。

下一次再比较的时候171是不用参加的。

那么接下来第二次的比较,163大于130所以,它的位置也进行交换

163和81进行比较,163大于81所以它们的位置要进行交换

163小于168所以它们的的位置不发生改变,

这时第二大的值就出现在了这个位置

那么下一次168也不需要参与操作了,接着只需要比较这三个数据就可以了

130大于81所以它们,位置发生交换

然后130是小于163的所以它们的位置不发生改变

那么第三大的值就出现在了这里

0

那么下一次它也不需要参加比较了。

虽然还剩下81和130大小我们已经看出来了,但是它们还是要做一次比较因为,我们实际的数据它未必是按照上述的操作来排列好的,所以我们还要做最后一次比较,81小于130所以它们的位置不发生改变:

做完上述操作之后,这五个人就按照从高到低的顺序排列好了

那么在这个过程中,我们一共做了四次比较,而且每次比较都会有一个人下一次不参与比较。

小结:

  • 如果有n个数据进行排序,总共需要比较n-1次。
  • 每一次比较完毕,下一次的比较就会少一个数据参与。

代码实现冒泡排序:

/*
    冒泡排序:
        一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面.
        依次对所有的数据进行操作,直至所有的数据按要求完成排序
 */
public class ArrayDemo {
    public static void main(String[] args) {
        //1.定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        System.out.println("排序前:" + arrayToString(arr));

        /*
        //3.第一次比较
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        System.out.println("第一次比较后" + arrayToString(arr));
        //4.第二次比较
        for (int i = 0; i < arr.length - 1 - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        System.out.println("第二次比较后" + arrayToString(arr));
        //5.第三次比较
        for (int i = 0; i < arr.length - 1 - 1 - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        System.out.println("第三次比较后" + arrayToString(arr));
        //6.第四次比较
        for (int i = 0; i < arr.length - 1 - 1 - 1 - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                int temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
        System.out.println("第四次比较后" + arrayToString(arr));
        */

        //7.把上面的代码注释并进行优化,使用for循环实现冒泡排序,
        for (int x = 0; x <= arr.length - 1; x++) {
            for (int i = 0; i < arr.length - 1-x; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
            System.out.println("第" + x + "次比较后" + arrayToString(arr));
        }
    }

    //2.把数组中的元素按照指定的规则组成一个字符串,[元素1,元素2...]
    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i] + ",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

4.2Arrays类的概述和常用方法

Arrays类在java.util包下,所以使用它是需要导包的.

该类包含用于操作数组的各种方法(例如排序和搜索)。

排序学过冒泡排序,搜索其实就是前面学过的查找。只不过它前面提供的更全面一些。

Arrays的成员方法

方法有很多,且全部是用static修饰的,我们先来看一下排序的方法。

我们重点看传递int数组的,它是按照数组的升序排列。

Arrays类包含用于操作数组的各种方法。

我们重点学两个:

public static String toString(int[] a)参数是int类型数组,返回值是String类型的,是返回指定数组的内容的字符串表示形式。也就是将int[] a内容按照指定的格式拼接成一个字符串,这个动作在学习冒泡排序的时候是做过的。

public static void sort(int[] a)参数是int类型数组,没有返回值,它是按照数字顺序排列指定的数组。

代码演示:

import java.util.Arrays;

/*
    Arrays类包含用于操作数组的各种方法。

    public static String toString(int[] a):返回指定数组的内容的字符串表示形式.
    public static void sort(int[] a):按照数字顺序排列指定的数组.
 */
public class ArraysDemo {
    public static void main(String[] args) {
        //定义以一个数组
        int[] arr = {24,69,80,57,13};
        //演示:public static String toString(int[] a);
        System.out.println("排序前:"+ Arrays.toString(arr));
        //[24,69,80,57,13]

        //排序:public static void sort(int[] a)
        Arrays.sort(arr);
        System.out.println("排序后:"+ Arrays.toString(arr));
        //[13,24,57,69,80]
    }
}

小结:

Arrays其实是一个工具类。

工具类的思想:

构造方法用private修饰(防止外界创建对象)。

成员用public static修饰(让外界只能使用类名来访问成员方法)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贰陆.256

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值