Java|Java 基础 30 数组冒泡排序和Arrays工具类
1.1 数组的冒泡排序
??冒泡排序:就是相邻的两个元素进行两两比较,把元素值大的元素依次向后排.
相关链接
维基百科
1.1.1 数组排序之冒泡排序原理图解
文章图片
BubbleSort.png 1.1.2 数组排序之冒泡排序代码实现
1.1.2.1案例代码
package com.itheima;
/*
* 数组排序:(冒泡排序)
*/
public class ArrayDemo {
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr = {24,69,80,57,13};
/*
//第一次比较
//arr.length-1是为了防止索引越界
//arr.length-1-0是为了减少比较的次数
for(int x=0;
x arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
//调用遍历方法
System.out.println("第一次比较完毕:");
printArray(arr);
//第二次比较
//arr.length-1是为了防止索引越界
//arr.length-1-1是为了减少比较的次数
for(int x=0;
x arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
//调用遍历方法
System.out.println("第二次比较完毕:");
printArray(arr);
//第三次比较
//arr.length-1是为了防止索引越界
//arr.length-1-2是为了减少比较的次数
for(int x=0;
x arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
//调用遍历方法
System.out.println("第三次比较完毕:");
printArray(arr);
//第四次比较
//arr.length-1是为了防止索引越界
//arr.length-1-3是为了减少比较的次数
for(int x=0;
x arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
//调用遍历方法
System.out.println("第四次比较完毕:");
printArray(arr);
*///用循环改进
/*
for(int y=0;
y<4;
y++) {
for(int x=0;
x arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
}
*//*
//循环做的次数不能写固定的值,用arr.length-1改进即可
for(int y=0;
y arr[x+1]) {
//交换数据
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
}
printArray(arr);
*///如果我有多个数组要排序,每个数组写这样的一段代码,太麻烦,怎么办呢
//用方法改进
sort(arr);
System.out.println("排序后:");
printArray(arr);
}/*
* 两个明确:
*返回值类型:void
*参数列表:int[] arr
*/
public static void sort(int[] arr) {
for(int x=0;
x arr[y+1]) {
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}/*
* 数组遍历
*/
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0;
x
1.2 Arrays工具类 1.2.1 Arrays类的概述和使用
- Arrays:提供了对数组操作的各种方法。
- public static String toString(int[] a):把数组转成字符串
- public static void sort(int[] a):对数组进行升序排序
package com.itheima;
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));
//public static void sort(int[] a):对数组进行升序排序
Arrays.sort(arr);
System.out.println("排序后:"+Arrays.toString(arr));
}
}
1.2.2 Arrays类中构造方法的问题 Arrays类中真的没有构造方法吗?
- 一个类中没有构造方法,系统将提供一个无参构造方法。
而我们在帮助文档中没有看到Arrays类的构造方法,这是为什么呢?
通过查看源码,我们找到了如下的内容:
private Arrays() {}
- Arrays类的这种设计是常用的工具类的设计思想:
- 构造方法私有。
- 成员都用static修饰。
- Math,Collections等
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- Python基础|Python基础 - 练习1
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用