03数组
Posted wld66
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03数组相关的知识,希望对你有一定的参考价值。
动态数组:
int[] arr = new int[5]; ->声明了一个能放5个int类型的数组
arr[0] = 1;
arr[1] = 2;
arr[0] = 41;
arr[1] = 8;
arr[0] = 11;
动态数组:++在初始化的时候元素空间分配 和 赋值,分别执行++
静态数组:
int[] arr = new int[]{7,5,18,3}; ->可以这么写
int[] arr = {6,5,18,3}; ->也可以这么写
静态数组:++在创建的时候元素的空间分配和赋值同时执行++
数组的索引
就是数组的下标,从0开始
比如: arr[0] 就是数组里的第一个数 依次往后
int arr = new int[]{6,5,18,3};
System.out.println(arr[0]); ->这里输出的会是6
数组的长度length
int[] strs = new String[]{"g","s","y","z"};
System.out.println(strs.length);
输出:4 strs这个数组的长度是4
数组的初始化默认值
在动态初始化中才有
int[] arr = [2];
System.out.println(arr[0]);
输出:0
数字类型的默认值是0,++对象的默认值是null++
多维数组
数组中的元素就是数组:
int[][] arr = new int[][]{
{1,2,3},
{11,12,13}
}
定义多维数组的长度:
int[][] arr = new int[3][4];
等同于↓
int[][] arr = new int[][]{
{1,2,3,4}, 第0个元素
{11,22,33,44}, 第1个元素
{111,222,333,444} 第2个元素
0 1 2 3
//333的位置就 arr[2][2]
}
int[][] arr = new int[3][];//只定义了一维数组
取值
取上边数组的 333
System.out.println(arr[2][2]);
练习
求所有元素的和
int[][] arr = new int[][]{
{3,8,2},
{2,7},
{9,0,1,6}
};
-----------------------------------------------------
1.先定义一个结果
int result = 0;
2.遍历一维数组
for(int i = 0; i < arr.length; i++){
for(int b = 0; b < arr[i].length; b++){
result += arr[i][b];
}
}
数组中的常见算法
- 求数组中的最大值,最小值,总和,平均数.
- 数组的复制,反转
- 数组元素排序
求数组中的最大值,最小值,总和,平均数.
int[] arr = new int[] {4,2,7,1,3,5};
//最大值
int max = arr[0];//假设arr[0]是最大值
for(int i = 0; i < arr.length; i++) {
if(max < arr[i]) {
max = arr[i];//存放目前最大值
}
}
System.out.println("最大值是:"+ max);
//最小值
int min = 0;
for(int i = 0; i < arr.length; i++) {
if(min > arr[i]) {
min = arr[i];
}
}
System.out.println("最小值是:"+ min);
//总和,平均数
int result = 0;
for(int i = 0; i < arr.length; i++) {
result += arr[i];
}
System.out.println("总和是:"+result);
System.out.println("平均数是:"+(result/arr.length));
数组的复制,反转
//数组的复制
int[] arr = new int[] {4,2,7,1,3,5};
int[] copy = new int[arr.length];//先声明一个与arr长度一致的数组
for(int i = 0; i < arr.length; i++) {
copy[i] = arr[i];//遍历arr ,把arr的每一个元素按照顺-
//序拿出来给copy的每一个元素赋值
//在这里 i 就是 copy和arr的元素下标
}
---------------------------
//数组的反转
int[] arr = new int[] {4,2,7,1,3,5};
//考虑在声明一个数组,temp 数组temp的长度与arr的长度一致
//倒着循环arr 正着给temp赋值
int h = 0;
int[] temp = new int[arr.length];
for(int i = arr.length-1; i >= 0; i--) {
//arr[i] = 5 4 3 2 1 0
//temp [h++] = arr[i];
temp [h] = arr[i];
h++;
}
arr = temp;
//System.out.println(Arrays.toString(temp));
System.out.println(Arrays.toString(arr));
数组元素排序
- 插入排序 (直接插入排序,折半插入排序,Shell排序)
- 交换排序 (冒泡排序,快速排序 (或分区交换排序))
- 选择排序 (简单选择排序,堆排序)
- 归并排序
- 基数排序
//冒泡排序
int[] arr = new int[] {4,7,3,1,0,9,2};
int temp = 0;
for(int a = 0; a < arr.length-1; a++) {
for(int b = 0; b < arr.length-1-a;b++) {
if(arr[b] > arr[b+1]) {
temp = arr[b+1];
arr[b+1] = arr[b];
arr[b] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
以上是关于03数组的主要内容,如果未能解决你的问题,请参考以下文章
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”