数组的Arrays类及冒泡排序
1.什么是Arrays类
- 数组的工具类java.util.Arrays
- 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
- 可以查看JDK帮助文档。
- Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名及进行调用,而不用使用对象来调用(注意是不用,而不是不能)
2.Arrays类的功能
- 给数组赋值:通过fill方法
- 给数组排序:通过sort方法,按升序
- 比较数组:通过equals方法比较数组中元素值是否相等。
- 查找数组元素: 通过binarySearch方法能对排序好的数组进行二分查找法操作。
3.Arrays类的使用
- 当你打开Arrays类,你会发现有许许多多的用法,但不需要大家都了解,当用到什么的时候,再去查找。
- 给大家看一个打印数组的arrays类
import java.util.Arrays; //引入该Arrays类的文件的包,出现这个的时候才可以正常使用
public class demo01 {
public static void main(String[] args) {
int[] a = {1213,864,5646,322,55};
System.out.println(Arrays.toString(a)); //输出这个 a 数组。
}
}
- 还有是给数组排序 Arrays.sort(a);
import java.util.Arrays;
public class demo01 {
public static void main(String[] args) {
int[] a = {1213,864,5646,322,55};
Arrays.sort(a); // 在这对数组进行了从小到大的排序,他们输出结果是从小到大的。
System.out.println(Arrays.toString(a));
}
}
4.冒泡排序
什么是冒泡排序
- 总共有八大排序,冒泡排序是最出名的一种
- 冒泡排序是通过两层循环,外层冒泡轮数。里层依次比较。
- 比较数组中,两个相邻的元素,如果第一个数比第二数要大,我们就交换他们的位置。
- 每一次比较,都会产生一个最大的,或者最小的数字。
- 下一轮,则可以少一次排序。
- 依次循环,直到结束。
怎么写冒泡排序
-
其中会用到两层for循环,第一层for循环是控制循环的轮数,判断我们要走多少次。第二层for循环,则是将里面的数进行大小比较,然后进行交换,第一层for循环结束以后,所有的数就会有序排列出来。轮数增加一次,就少比较一次数的大小。
-
代码如下
import java.util.Arrays;
public class demo01 {
public static void main(String[] args) {
int[] a = {1213,864,5646,322,55};
int b = 0;
for (int i = 1; i < 5; i++) { //控制循环轮数
for (int j = 0 ; j < 5-i; j++) { //来比较里面的数大小,轮数增加一次,就少比较一次。
if(a[j]>a[j+1]) {
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
}
System.out.println(Arrays.toString(a));
}
}
- 为了增加代码的效率,咱们可以修改一下代码,即当循序已经排号,咱们立即让他推出大循环,结束代码。
import java.util.Arrays;
public class demo01 {
public static void main(String[] args) {
int[] a = {1213,864,5646,322,55};
int b = 0,n = 0;
for (int i = 1; i < 5; i++) {
n = 0; /*每一轮结束以后,将上一轮的大小交换次数清零,目的看清本轮大小交 换次数*/
for (int j = 0 ; j < 5-i; j++) {
if(a[j]>a[j+1]) {
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
n++; //大小交换一次,n就加1.
}
}
if(n == 0) break; /*完成本轮交换后,若n还未0,则表示没有进行大小交换,也就是意味 着,数已经排序好了,无需再进行新的一轮。*/
}
System.out.println(Arrays.toString(a));
}
}