数组
定义
语法格式:数据类型[] 名字 //java中一般是把中括号放在前边
赋值:new 数据类型[大小]
int []max=new int[10];//10是开辟是个空间
获取数组长度,生成代码块
数组名字.length itar
一般是进行数组循环赋值的时候
内存分析
1.在进行声明数组时一个内存的分析
2.在创建数组时一个内存的分析
值得注意的是,new一个东西的时候用堆,声明的时候数组并不存在
3.给数组元素赋值
长出现的一个错误
ArrayIndexOutBoundsException:1// 数组下标不存在一处
三种初始化
一.静态初始化
int []a={1,2,3,4};
二.动态初始化
int []a=new int[10];
三.默认初始化
都是0
数组几个特点
- 数组长度是确定的
- 类型必须是确定的
- 可以是任何的数据类型
- 数组的变量输入引用类型
别忘了增强for循环 快捷创建方式 数组名.for
Arrays 关于数组的工具类 可以直接用类名进行,是静态类
1.Arrays.toString(数组名) //能把数组每个元素都打印出来
2.Arrays.sort(数组名)//把数组排序 升序出来
3.Arrays.fill(数组名,a)//把数组中的的值都用A替换了
冒泡排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 [1]
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 [1]
- 针对所有的元素重复以上的步骤,除了最后一个。 [1]
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 [1]
时间复杂度:O(n的二次方)
package Scanner;
import java.util.Arrays;
public class shuzu {
public static void main(String[] args) {
int[] a = {1, 4, 3, 2, 6};
System.out.println(Arrays.toString(a));
shuzu.sort(a);
System.out.println(Arrays.toString(a));
}
//冒泡排序算法
public static void sort(int a[]) {
// System.out.println(Arrays.toString(a));
// System.out.println( a.length);
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
int mid;
if (a[j] > a[j + 1]) {
mid = a[j + 1];
a[j + 1] = a[j];
a[j] = mid;
}
}
}
}
}
需要理解算法的几点:
- 每次都要从第一个进行,这是外循环的for,有几个数就要进行几次
- 进行的过程中,排在对后一个的数一定是最大的或者最小的
- 一定注意在使用a.length时避免数组溢出的情况
稀疏数组
当一个数组大部分时0,或者大量相同的值
处理方式:记录数组有几行几列。有多少个不用的值
第一行时 一共几行几列,有几个有意义的值
其余的表示第几行第几列,值是啥。