Java中的多维数组
在java中没有多维数组语法,根据数组的数据类型,与数据保存数据的数据类型相结合推出的基于数组这一基本概念的多维数组(在java中只存在数组的语法 不存在多维数组的语法 所谓的多维数组 就是数组中存储数组的嵌套)
在一个数组中保存另外一个数组 另一个数组保存数据
语法:
数据类型 [][]……数组名 =new 数据类型[长度a][长度b]……[长度n]
长度a当前数组中保存了多少个数组
长度b当前数组中保存了多少个数组
长度n每个数组中保存的数据个数
//数组使用步骤
//1、声明
//数据类型 [] 数组名
//数据类型 数组名 []
int [] a;
//2、创建 初始化
//动态创建 以声明的变量=new 数据类型[数组长度] 会为每一位元素赋默认值
//可以与声明分开写 但是大部分 动态创建于声明一同进行
//静态创建 数据类型 []变量名={数据1,数据2,数据3};
//静态创建 必须将声明与创建一同进行
a=new int[5];
//3、赋值
//无论是动态创建 还是静态创建都会对每个元素进行赋值
//使用 数组名[索引]=值 的形式修改元素的数据值
a[3]=2;
//4、使用
//与赋值语法相同 数组名[索引] 的形式获取指定数组索引位置的值
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//二维数组的使用
//声明 赋值 使用
//数据类型 [][] 数组名
//数据类型 数组名 [][]
//创建初始化
//动态创建 数组变量=new 数据类型 [当前数组保存数据长度][数组保存数据长度];
int [][] i=new int[3][];
for (int j = 0; j < i.length; j++) {
i[j]=new int[j+1];
}
//创建一个保存int类型数组 的数组 长度为3 保存int类型数组的长度为2
//对于动态创建而言 创建的类似于矩形 第一个参数就是矩形的行数 第二个参数就是列数
//静态创建
//所有数据以{}包裹 数据间以,分割
int [][]i1={{1},{2,3},{4,5,6}};
//赋值
i1[2][1]=3;
//使用
//int t=i[3][1];
//二维数组 的遍历
//先将数组的每一位取出
//继续将取出每一位数组的元素取出
for (int[] js : i1) {
for (int j : js) {
System.out.print(j+" ");
}
System.out.println();
}
算法的概念
什么叫算法
实现某一复杂操作的简单流程(将复杂的流程简单化 将不必要执行的代码(运行效率低的代码)使用好的代码替换)
使用代码编写实现某一复杂操作的代码块
排序算法
快速的将数组中的数据进行排序
冒泡排序
① 基本思想
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为每趟比较将当前数列未排序部分的最大的元素“沉”到数列末端,而小的元素会经由交换慢慢“浮”到数列的顶端。
② 算法描述
1)比较相邻的元素。如果前一个比后一个大,就交换它们两个;
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
3)针对所有的元素重复以上的步骤,除了最后一个;
4)重复步骤1~3,直到排序完成。为了优化算法,可以设立一个布尔标识,每趟排序开始前设为false,如果该趟排序发生了交换就置为true,如果一趟排序结束标识仍为false表示该趟排序没有发生交换,即数组已经有序,可以提前结束排序。
// 排序
int[] a = { 3, 1, 4, 2, 8, 9, 7, 6, 5 };
// 依次取 与所有当前之后数据比较 有比他大的交换位置
int count = 0;
// for (int i = 0; i < a.length; i++) {
// for (int j = i; j < a.length; j++) {
// count++;
// if (a[i] < a[j]) {
// int b = a[i];
// a[i] = a[j];
// a[j] = b;
// }
// }
// }
// System.out.println("普通:" + count);
// 冒泡排序
for (int j = 1; j < a.length; j++) {
for (int i = 0; i < a.length- j; i++) {
if (a[i] > a[i + 1]) {
count++;
int b = a[i];
a[i] = a[i + 1];
a[i + 1] = b;
}
}
}
System.out.println("冒泡:" + count);
for (int i : a) {
System.out.print(i + " ");
}
}