数组的应用题
最值问题
【1】实现一个功能:给定一个数组int[] arr = {12,3,7,4,8,125,9,45}; ,求出数组中最大的数。
思路图:
- public class TestArray04{
- public static void main(String[] args){
- //实现一个功能:给定一个数组int[] arr = {12,3,7,4,8,125,9,45}; ,求出数组中最大的数。
- //1.给定一个数组
- int[] arr = {12,3,7,4,8,125,9,45,666,36};
- //2.求出数组中的最大值:
- //先找一个数上擂台,假定认为这个数最大:
- int maxNum = arr[0];
- for(int i=0;i<arr.length;i++){
- if(arr[i]>maxNum){
- maxNum = arr[i];
- }
- }
- System.out.println("当前数组中最大的数为:"+maxNum);
- }
- }
【2】将求最大值的方法提取出来:
- public class TestArray04{
- public static void main(String[] args){
- //实现一个功能:给定一个数组int[] arr = {12,3,7,4,8,125,9,45}; ,求出数组中最大的数。
- //1.给定一个数组
- int[] arr = {12,3,7,4,8,725,9,45,666,36};
- //2.求出数组中的最大值:
- //调用方法:
- int num = getMaxNum(arr);
- System.out.println("当前数组中最大的数为:"+num);
- }
- /*
- 想提取一个方法:求数组中的最大值
- 求哪个数组中的最大值 ---》不确定因素:哪个数组 (形参)---》返回值:最大值
- */
- public static int getMaxNum(int[] arr){
- //先找一个数上擂台,假定认为这个数最大:
- int maxNum = arr[0];
- for(int i=0;i<arr.length;i++){
- if(arr[i]>maxNum){
- maxNum = arr[i];
- }
- }
- return maxNum;
- }
- }
【3】画内存:
方法的实参传递给形参的时候一定要注意:一切都是值传递:
如果是基本数据类型,那么传递的就是字面值
如果是引用数据类型,那么传递的就是地址值
查询问题
【1】查询指定位置的元素
- public class TestArray05{
- public static void main(String[] args){
- //查询指定位置的元素
- //给定一个数组:
- int[] arr = {12,34,56,7,3,10};
- //查找索引为2的位置上对应的元素是什么?
- System.out.println(arr[2]);
- }
- }
上面代码体现了数组的一个优点:
在按照位置查询的时候,直接一步到位,效率非常高
【2】查询指定元素的位置--》找出元素对应的索引
- public class TestArray06{
- public static void main(String[] args){
- //查询指定元素的位置--》找出元素对应的索引
- //给定一个数组:
- int[] arr = {12,34,56,7,3,56};
- // 0 1 2 3 4 5
- //功能:查询元素888对应的索引:
- int index = -1; //这个初始值只要不是数组的索引即可
- for(int i=0;i<arr.length;i++){
- if(arr[i]==12){
- index = i;//只要找到了元素,那么index就变成为i
- break;//只要找到这个元素,循环就停止
- }
- }
- if(index!=-1){
- System.out.println("元素对应的索引:"+index);
- }else{//index==-1
- System.out.println("查无次数!");
- }
- }
- }
【3】将查指定元素对应的索引的功能提取为方法:
- public class TestArray06{
- public static void main(String[] args){
- //查询指定元素的位置--》找出元素对应的索引
- //给定一个数组:
- int[] arr = {12,34,56,7,3,56};
- // 0 1 2 3 4 5
- //功能:查询元素888对应的索引:
- //调用方法:
- int index = getIndex(arr,999);
- //后续对index的值进行判断:
- if(index!=-1){
- System.out.println("元素对应的索引:"+index);
- }else{//index==-1
- System.out.println("查无次数!");
- }
- }
- /*
- 定义一个方法:查询数组中指定的元素对应的索引:
- 不确定因素:哪个数组,哪个指定元素 (形参)
- 返回值:索引
- */
- public static int getIndex(int[] arr,int ele){
- int index = -1; //这个初始值只要不是数组的索引即可
- for(int i=0;i<arr.length;i++){
- if(arr[i]==ele){
- index = i;//只要找到了元素,那么index就变成为i
- break;//只要找到这个元素,循环就停止
- }
- }
- return index;
- }
- }
添加元素
【1】实现一个功能:
添加逻辑:
- public class TestArray07{
- public static void main(String[] args){
- //功能:给定一个数组,在数组下标为2的位置上添加一个元素91
- //1.给定一个数组:
- int[] arr = {12,34,56,7,3,10,55,66,77,88,999,89};
- // 0 1 2 3 4 5
- //2.输出增加元素前的数组:
- System.out.print("增加元素前的数组:");
- for(int i=0;i<arr.length;i++){
- if(i!=arr.length-1){
- System.out.print(arr[i]+",");
- }else{//i==arr.length-1 最后一个元素不用加,
- System.out.print(arr[i]);
- }
- }
- //3.增加元素
- /*
- arr[5] = arr[4];
- arr[4] = arr[3];
- arr[3] = arr[2];
- */
- int index = 1;//在这个指定位置添加 元素
- for(int i=arr.length-1;i>=(index+1);i--){
- arr[i] = arr[i-1];
- }
- arr[index] = 666;
- //4.输出增加元素后的数组:
- System.out.print("\n增加元素后的数组:");
- for(int i=0;i<arr.length;i++){
- if(i!=arr.length-1){
- System.out.print(arr[i]+",");
- }else{//i==arr.length-1 最后一个元素不用加,
- System.out.print(arr[i]);
- }
- }
- }
- }
【2】将添加功能提取为一个 方法:
- import java.util.Scanner;
- public class TestArray07{
- public static void main(String[] args){
- //功能:给定一个数组,在数组下标为2的位置上添加一个元素91
- //1.给定一个数组:
- int[] arr = {12,34,56,7,3,10,55,66,77,88,999,89};
- // 0 1 2 3 4 5
- //2.输出增加元素前的数组:
- /*
- System.out.print("增加元素前的数组:");
- for(int i=0;i<arr.length;i++){
- if(i!=arr.length-1){
- System.out.print(arr[i]+",");
- }else{//i==arr.length-1 最后一个元素不用加,
- System.out.print(arr[i]);
- }
- }
- */
- //从键盘接收数据:
- Scanner sc = new Scanner(System.in);
- System.out.println("请录入你要添加元素的指定下标:");
- int index = sc.nextInt();
- System.out.println("请录入你要添加的元素:");
- int ele = sc.nextInt();
- //3.增加元素
- //调用方法:
- insertEle(arr,index,ele);
- //4.输出增加元素后的数组:
- System.out.print("\n增加元素后的数组:");
- for(int i=0;i<arr.length;i++){
- if(i!=arr.length-1){
- System.out.print(arr[i]+",");
- }else{//i==arr.length-1 最后一个元素不用加,
- System.out.print(arr[i]);
- }
- }
- }
- /*
- 提取一个添加元素的方法:
- 在数组的指定位置上添加一个指定的元素。
- 在哪个数组的哪个位置添加哪个元素!
- 不确定因素:形参:哪个数组,哪个位置,哪个元素
- 返回值:无
- */
- public static void insertEle(int[] arr,int index,int ele){
- for(int i=arr.length-1;i>=(index+1);i--){
- arr[i] = arr[i-1];
- }
- arr[index] = ele;
- }
- }
删除元素
【1】实现一个功能:删除指定位置上的元素
逻辑:
- import java.util.Arrays;
- public class TestArray08{
- public static void main(String[] args){
- //功能:给定一个数组,删除下标为2元素
- //1.给定一个数组:
- int[] arr = {12,34,56,7,3,10,34,45,56,7,666};
- // 0 1 2 3 4 5
- //2.输出删除前的数组:
- System.out.println("删除元素前的数组:"+Arrays.toString(arr));
- //3.删除
- /*
- arr[2] = arr[3];
- arr[3] = arr[4];
- arr[4] = arr[5];
- */
- int index = 0;
- for(int i=index;i<=arr.length-2;i++){
- arr[i] = arr[i+1];
- }
- arr[arr.length-1] = 0;
- //4.输出删除后的数组:
- System.out.println("删除元素后的数组:"+Arrays.toString(arr));
- }
- }
【2】实现一个功能:删除指定元素
- import java.util.Arrays;
- public class TestArray09{
- public static void main(String[] args){
- //功能:给定一个数组,删除元素3:
- //1.给定一个数组:
- int[] arr = {12,34,56,7,3,10,34,45,56,7,666};
- //2.输出删除前的数组:
- System.out.println("删除元素前的数组:"+Arrays.toString(arr));
- //找到要删除的元素对应的索引即可:
- int index = -1 ;
- for(int i=0;i<arr.length;i++){
- if(arr[i]==1200){
- index = i;
- break;
- }
- }
- //3.删除
- if(index!=-1){
- for(int i=index;i<=arr.length-2;i++){
- arr[i] = arr[i+1];
- }
- arr[arr.length-1] = 0;
- }else{//index==-1
- System.out.println("根本没有你要删除的元素!");
- }
- //4.输出删除后的数组:
- System.out.println("删除元素后的数组:"+Arrays.toString(arr));
- }
- }