数组二
一、Arrays类
这是java里面自带的关于数组的一些方法,我们可以直接调用
例如:
//1.Arrays.toString()
System.out.println(Arrays.toString(a));//打印输出数组元素
//2.Arrays.sort()
Arrays.sort(a);
System.out.println(Arrays.toString(a));//先对数组元素进行排序(升序),再打印
//3.Arrays.fill()
//填充一部分元素
Arrays.fill(a,2,4,0);//将a[2]到a[4]之间填充为0 Arrays.fiil(数组名,起始位,终止位,填充数值)
System.out.println(Arrays.toString(a));//打印填充后的数组元素
//填充所有元素
Arrays.fill(a,0);//所有数组元素填充为0 Arrays.fill(数组名,填充数值)
System.out.println(Arrays.toString(a));//打印填充后的数组元素

二、冒泡排序
//冒泡排序
//1.比较数组中两个相邻的元素,如果前一个比后一个大,则交换顺序
//2.每一次比较都会产生一个较大和较小的数
//3.下一轮则可以少一次排序
//4.依次循环,直到结束
package array;
import java.util.Arrays;
public class ArrayDemo8 {
public static void main(String[] args) {
int[] a = {1,6,4,9,5,12,8,35};
sort(a);//调用sort冒泡方法对数组a进行排序
System.out.println(Arrays.toString(a));//Arrays.toString()指令打印排好序的数组
}
public static int[] sort(int[] array){//冒泡排序方法
//定义一个临时变量
int temp = 0;
//外层循环:判断需要循环多少次
for (int i = 0; i < array.length-1; i++) {//比较array.length-1次就可以了
boolean flag = false;//这里利用一个flag标识位减少了没有意义的比较
//内层循环:比较,若前一个大就交换位置
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]<array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if (flag == false){
break;
}
}
return array;
}
}
三、稀疏数组
稀疏数组:记录原始数组的大小,记录有效数字的位置和数值,压缩成一个小的数组

package array;
public class ArrayDemo9 {
//******稀疏数组:记录原始数组的大小,记录有效数字的位置和数值,压缩成一个小的数组
public static void main(String[] args) {
//1.创建一个二维数组 11*11 0代表没有棋子,1代表黑棋,2代表白棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//2.输出原始的数组
System.out.println("输出原始的数组:");
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
System.out.print(array1[i][j]+"\t");
}
System.out.println();
}
System.out.println("============================");
//***************转换为稀疏数组保存*************
//1.获取有效值的个数
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array1[i][j] != 0){
sum++;
}
}
}
System.out.println("有效值的个数为"+sum+"个");
//2.创建一个稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;//这三行代码对稀疏数组的第一行进行了定义和赋值,表明了原始数组的行数、列数和有效值数
//3.遍历二维数组,将非零的值存放到稀疏数组中
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] =
