前言
一转眼都到了第二周了,时间过得很快啊,哈哈,今天给大家分享的是数组的相关知识。老规矩,如果文中有什么错误的地方,望各位大牛及时的提出来,小弟不胜感激,话不多说,正文它来了!
数组
1.概述
- 数组是相同类型的多个数据的容器
- 数组里的元素按线性顺序排列
- 线性顺序:简单理解就是一个跟一个顺序排列
2.数组的几种创建方式
格式1:创建数组的同时,指定数组中的内容
数据类型【】数组名称 = {数据1,数据2,数据3...数据n};
int[] nums = {1,2,3,4,45,23,21,7};
格式2:创建数组的同时,指定数组的长度,但不指定数组中的内容
数据类型【】数组名称 = new 数据类型(数组长度只能通过int数据类型指定)
int[] nums = new int[10];//该数组中只能存储10个数据,下标从0~9
格式3:创建数组,不初始化(就像创建一个变量不给它赋值一样)
数据类型【】数组名
int[] nums;
//如果想要赋值
int[] nums = {1,2};//(√)
int[] nums = new int[数组长度];//(√)
int[] nums = new int[]{1,2};//(√)
//注意:
int[] nums = {1,2};//(×)
3.数组的一些操作
- 获取数组的长度
- 数组名称 . length
- 通过下标操作数组中的数据
- 数组名称【下标】= 值;(给数组中某个下标赋值)
- 数组名称【下标】;(从数组某个下标取值)
4.数组的遍历
从0下标到数组的最大小标取出数据并显示的操作
public class Demo{
public static void main(String[] args) {
int[] nums = {10,20,30,40,50,60,70};
for(int a = 0;a < nums.length;a++){
System.out.print(nums[a]);
}
}
}
5.冒泡排序
public class Demo{
public static void main(String[] args){
int[] nums = {12,32,3,4,16,21,45};
int i;
for(int a=0;a<nums.length-1;a++){//外层循环控制:比较的轮数
for(int b=0;b<nums.length-a-1;b++){//内层循环控制:每轮比较的次数
if(nums[b]>nums[b+1]){
i = nums[b];
nums[b] = nums[b+1];
nums[b+1] = i;
}
}
}
}
}
6.二分查找
是一种效率较高的查找方法。但是,要求数组必须采用顺序存储结构,数据有序排列
public class Demo{
public static void main(String[] args){
int[] nums = {1,2,3,4,5,6,7,8,9};
int num = 6;//被查找的数据
int minIndex = 0;
int maxIndex = nums.length-1;
int centerIndex = (minIndex+maxIndex)/2;
while(true){
if(nums[centerIndex]>num){
maxIndex = centerIndex-1;//中间数据较大,则最大下标等于中间下标 - 1
}else if(nums[centerIndex]<num){
minIndex = centerIndex+1;//中间数据较小,则最小下标等于中间下标 + 1
}else{
break;
}
centerIndex = (minIndex+maxIndex)/2;//每次查找完,需要重新计算中间下标的值
}
System.out.println("位置:"+centerIndex);
}
}
7.多维数组
多维数组自己接触的并不多,简单说一下二维数组的创建格式吧
格式:
int[][] 数组名称 = new int[外层数组的长度][控制内层数组的长度,可以不写,写上会限制内层所有数组的长度]
例子:
int[][] nums = new int[10][];
nums[0] = new int[]{1,2,3};
int [] [] nums = new int [10] [];//输出结果为3