Arrays类
- 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作
- Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不使用对象来调用
- 具有以下功能:数组赋值(fill方法)、数组排序(sort方法升序)、数组比较(equals方法)、数组查找(binarySearch方法)等
JAVA-arrays类文档
冒泡排序
- 总共有八大排序
- 冒泡排序相对简单,外层冒泡轮数,内层依次比较
- 时间复杂度为O(n**2)
代码实现:
import java.util.Arrays;
public class demo{
public static void main(String[] args) {
int[] a={5,4,3,2,1};
System.out.println(Arrays.toString(sor(a)));
}
public static int[] sor(int[] array){
int temp;
for (int i=0;i< array.length-1;i++){
for (int j=0;j< array.length-1-i;j++){
if(array[j]>array[j+1]){
temp =array[j];
array[j] =array[j+1];
array[j+1] =temp;
}
}
}
return array;
}
}
稀疏数组
- 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
- 稀疏数组是把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
代码实现:
public class demo{
public static void main(String[] args) {
int[][] array1 = new int[10][10];
array1[0][0] = 1;
array1[4][4] = 2;
array1[9][9] = 3;
System.out.println("原始数组:");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
int sum=0;
for (int i=0;i< array1.length;i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j] != 0)
sum++;
}
}
System.out.println("有效值个数为:" + sum);
int[][] array2 = new int[sum + 1][3];
array2[0][0] = array1.length;
array2[0][1] = array1[0].length;
array2[0][2] = sum;
int count = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j] != 0) {
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
System.out.println("稀疏数组:");
for (int[] value : array2) {
System.out.println(value[0] + "\t" + value[1] + "\t" + value[2] + "\t");
}
System.out.println("还原:");
int[][] array3 = new int [array2[0][0]][array2[0][1]];
for(int i=1;i< array2.length;i++){
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
for (int[] ints:array1){
for(int anInt :ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}