Java基础学习——数组(数组的遍历,冒泡排序,二分查找,约瑟夫环)

🌟数组:
概述:
数组是相同数据类型的多个数据的容器。

创建格式:
常用格式1:数据类型[] 数组名称 = new 数据类型[数组长度];
int[] ages = new int[10];
常用格式2: 数据类型[] 数组名称 = {数组内容1,数组内容2,数组内容3};
int[] age2 = {10.11.12};

数组的遍历:
从下标 index = 0; 打印到 index 的最大值,称为数组的遍历;语法
for(index = 0;index<age2;index++){
System.out.println(“ages[index]”);
}

数组常见问题:
1.数组下标越界问题
2.空指针问题:未给数组赋值

寻找数组中的最大值或最小值:
步骤:
1.创建一个变量,用于存储遍历数组是发现的最大值
2.循环取出数组中的每一个内容,从1开始,并将数组中的每一个内容与n 比较

比如
int mums = {10,20,88,30,65};
int n = nums[0]; //设置遍历的数组中的第一个数,但凡比这个数大就
for(i = 1;i<nums.length;i++){
n = n>nums[i]?n:nums[i]; //三目运算符,表示如果n>下角标为i 的数,就赋值n,否则赋值nums[i];
}

🌟冒泡排序:
原理:比较相邻的数据,将较小数据的移到左边,将较大的数据移到右边

15 18. 13. 20. 30. 60
0. 1. 2. 3. 4. 5

比较的轮数:数组长度-1;
第1轮比较次数:数组长度-1次
第2轮比较次数:数组长度-2次

第n轮比较次数:数组长度-n次

升序排列口诀:

N个数字来排队,
两两相比小靠前。
外层循环length-1;
内层循环length-i-1。

升序排列口诀:
N个数字来排队,
两两相比大靠前。
外层循环length-1;
内层循环length-i-1。

🌟二分查找:
int[] mums = {10,20,30,40,50,60,70,80,90};
查找的数组数据必须是有序排类的,如果乱序要用冒泡排序写成顺序
查找数据60

几个关键点:
1.确定查找的范围 最小下标 最大下标
2.计算中间的下标 (最小+最大)/2
3.与中间下标数据做比较,若中间数据较大,则最大下标等于中间下标-1
与中间下标数据做比较,若中间数据较小,则最小下标等于中间下标+1

4.当最小下标 大于 最大下标时,说明数据是不存在的

🌟多维数组(了解)
结构:
数据类型[ ] [ ] 数组名= new 数组类型[外层数组长度][ ]

Public static void main(String[] args){
Int[ ] [ ] nums = new int[ ] [ ];
nums[0] = new int[ ] {1,2,3};
System.out.println(nums[0][ ] );
}

🌟约瑟夫环:

复制数组方法:
System.arraycopy();

方法里有5个参数:
(原数组,原数组的起始位置,目标数组,目标数组的起始位置,复制多少个数据)

用法:
int[] a = {3,1,8,7,2,9};
int[] b = new int[10];

System.arraycopy(a,0,b,0,a.length);

如果,目标数组长度小于原始数组,需要去掉原始数组中指定坐标的数字,复制两次截断数组

int[] a = {3,1,8,7,2,9};
int[] b = new int[5];
去掉index 2 的数字

设int index=2;
System.arraycopy(a,0,b,0,index);

System.arraycopy(a,index+1,b,index,a.length-index-1);

System.out.println(Arrays.toString(a)); //将数组转化成字符串输出(自带格式)

把上述内容封装成方法:
kickoff(a,index:2);
showArray(a);

//踢掉指定数字的方法:
Private static void kickOff(int[] a, int index){
Int[] b = new int[a,length-1];
System.arraycopy(a,0,b,0,index);
System.arraycopy(a,index+1,b,index,a.length-index-1);
return b;
}

//显示数组方法:
Private static void showArray(int[] a){
System.out.println(Arrays.toString(a)); //将数组转化成字符串输出(自带格式)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值