-
数组的工具类java.util.Arrays
-
查看帮助文档:Java SE 文档 - API 和文档 | Oracle 中国
-
Arrays类中的方法都是static修饰的静态方法
-
具有以下常用功能
-
给数组赋值:通过fill方法
-
对数组排序:通过sort方法(升序)
-
比较数组:通过equals方法比较数组中元素值是否相等
-
查找数组元素:通过binarySearch方法能对排序好的数组进行二分法查找法操作
-
package com.baidu.array;
import java.lang.reflect.Array;
import java.util.Arrays;
public class A6 {
public static void main(String[] args) {
int[] a={1,2,3,123,314,35,3,34,5};
//打印数组元素:Array.toString
//System.out.println(Arrays.toString(a));
Arrays.sort(a);//数组进行排序,升序
System.out.println(Arrays.toString(a));
//printArray(a);
}
public static void printArray(int[] a){
for (int i=0;i
冒泡排序
-
冒泡的代码:两层循环,外层冒泡轮数,里层依次比较
-
这个嵌套循环,算法的时间复杂度为O(n^2)
package com.baidu.array;
import java.util.Arrays;
public class A7 {
public static void main(String[] args) {
int[] a = {1, 23, 43, 455, 3, 2, 345, 353, 21};
int[] sort = sort(a);//调用冒泡排序,返回排序后的数组
System.out.println(Arrays.toString(sort));
}
public static int[] sort( int[] array) {
//临时变量
int temp = 0;
//外层循环:判断我们要比较多少次
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 + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
return array;
}
}
稀疏数组
-
当一个数组中大部分元素为0,或者为同一值的数组是,可以使用稀疏数组来保存该数组
-
稀疏数组的处理方式是:
-
记录数组一个有几行几列,有多少个不同值
-
把具有不同值的元素和行列的值记录在一个小规模的数组中,从而从而缩小程序的规模
-
-
需求:编写五子棋游戏中,有存盘退出和续上盘的功能
-
分析问题:有误该二维数组的很多值是默认值0,因此记录了很多没有意义的数据
-
解决:稀疏数组
package com.baidu.array;
public class A8 {
public static void main(String[] args) {
int[][] arr = new int[11][11];
arr[1][2] = 1;
arr[2][3] = 2;
//输出原始数组
System.out.println("输出的原始数组:");
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt + " ");
}
System.out.println();
}
System.out.println("----------------");
//转化为稀疏数组保持
//获取有效值的个数
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (arr[i][j] != 0) {
sum++;
}
}
}
System.out.println("有效值的个数:" + sum);
//创建一个稀疏数组
int[][] arr2 = new int[sum + 1][3];
arr2[0][0] = 11;
arr2[0][1] = 11;
arr2[0][2] = sum;
//遍历二维数组,将非零的值存放稀疏数组中
int count = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (arr[i][j] != 0) {
count++;
arr2[count][0] = i;
arr2[count][1] = j;
arr2[count][2] = arr[i][j];
}
}
}
//输出稀疏数组
System.out.println("稀疏数组:");
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i][0] + " " +
arr2[i][1] + " " +
arr2[i][1] + " ");
}
System.out.println("------------------");
System.out.println("还原的稀疏数组:");
//1.读取稀疏数组
int[][] arr3 = new int[arr2[0][0]][arr2[0][1]];
//2.给其中的元素还原值
for (int i = 1; i < arr2.length; i++) {
arr3[arr2[i][0]][arr2[i][1]] = arr2[i][2];
}
//3.打印
for (int[] ints : arr3) {
for (int anInt : ints) {
System.out.print(anInt + " ");
}
System.out.println();
}
}
}


