当前位置: 代码迷 >> 综合 >> 【Java】理论知识学习-DAY13
  详细解决方案

【Java】理论知识学习-DAY13

热度:17   发布时间:2024-01-15 21:28:20.0

1.数组冒泡排序

冒泡排序:每次比较相邻两数,小的交换到前面,每轮结束后最大的数交换到最后

(1)具体操作:用双重循环将5个数字升序排序

(2)注意点:

·5个数字如何存放:数组,数组.length = 5

·控制比较多少轮:外层循环,循环变量i

·控制比较多少次:内层循环,循环变量j

·交换元素

(3)例子:输入5名学员的成绩后,利用冒泡排序的方法进行升序排序

import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input = new Scanner(System.in);//声明创建数组,存储学生成绩int scores[] = new int[5];//输入五名学生的成绩System.out.println("请输入5名学员的成绩:");for(int i =0;i<5;i++) {scores[i] = input.nextInt();}//定义一个用来进行数据交换的变量int temp =0;//进行冒泡排序,对5名学员的成绩进行降序处理System.out.println("学员成绩按降序排列:");for(int i =0;i<scores.length-1;i++){for(int j =0;j<scores.length-1-i;j++){if(scores[j]<scores[j+1]){temp = scores[j];scores[j] = scores[j+1];scores[j+1] = temp;}}}//遍历输出排序后的数组for(int score:scores){System.out.print(score+"\t");}}
}

2.数组的删除

(1)首先找到要删除的元素的位置

(2)通过把“后面的元素往前移动,覆盖要删除的元素”的方法来实现对目标元素的删除

(3)移动完之后,得把最后一个元素设置为空值,数值数组为0,字符串数组为null

(4)例子:删除一个数值数组里的元素

public class Test {public static void main(String[] args) {//定义一个数组int scores[] = {44,53,78,98,81};//删除"78"这个元素//定义要删除元素的默认初始位置int index = -1;//输出修改前的数组System.out.println("修改前的数组为:");for(int score:scores){System.out.print(score+"\t");}//换行System.out.println();//寻找要删除的元素位置for(int i =0;i<scores.length;i++){if(scores[i]==78){index=i;//把后面的元素都往前移一个位置for(int j =i;j<scores.length-1;j++){scores[j] = scores[j+1];}//将最后一个元素设置为空值或者-1scores[scores.length-1]=0;}}//输出修改后的数组System.out.println("修改后的数组为:");for(int score:scores){System.out.print(score+"\t");}}
}

输出结果:

修改前的数组为[44 , 53 , 78 , 98 , 81]

修改后的数组为[44 , 53 , 98 , 81 , 0]

3.二维数组

(1)定义二维数组的语法格式

数据类型[ ] [ ] 数组名;

数据类型  数组名[ ] [ ];

·例:

//定义二维数组
int[][] scores;
//分配内存空间
scores = new int[5][0];//或者
int[][] scores = new int[5][0];

(2)初始化二维数组(边声明边赋值)

·例:

int[][] scores = new int[][]{
   {1,2,3},{4,5,6}};//或者int scores[][] = {
   {1,2,3},{4,5,6},{7,8}};

4.Arrays类

(1)Arrays.equals(array1,array2)--比较两个数组是否相等

·与“=”的区别

·例1:

import java.util.Arrays;public class Test {public static void main(String[] args) {int num1[] = {1,2,3,4,5};int num2[] = {1,2,3,4,5};boolean flag1 = num1==num2;boolean flag2 = Arrays.equals(num1,num2);System.out.println("利用=的比较结果为:"+flag1);System.out.println("利用Arrays类方法的比较结果为:"+flag2);}
}

输出结果:

利用=的比较结果为:false

利用Arrays类方法的比较结果为:true

·例2:

import java.util.Arrays;public class Test {public static void main(String[] args) {int num1[] = {1,2,3,4,5};int num2[] = num1;boolean flag1 = num1==num2;boolean flag2 = Arrays.equals(num1,num2);System.out.println("利用=的比较结果为:"+flag1);System.out.println("利用Arrays类方法的比较结果为:"+flag2);}
}

输出结果:

利用=的比较结果为:true

利用Arrays类方法的比较结果为:true

·总结:

1)数组1==数组2,比较的是是否为同一个数组;

2)Arrays.equals(数组1,数组2),比较的是数组的长度与内容(元素的顺序与值)

(2)Arrays.sort(array)--对数组元素进行升序排列

1)使用for循环遍历二维数组;

2)使用Arrays类的sort()方法对二维数组的元素进行升序排列;

3)使用for循环遍历二维数组的元素并输出

4)例:

import java.util.Arrays;public class Test {public static void main(String[] args) {int nums[] = {4,7,3,9,5,1};//遍历排序前的数组System.out.println("排序前的数组:");for(int num:nums){System.out.print(num+"\t");}//进行升序排列Arrays.sort(nums);//换行System.out.println();//遍历排序后的数组System.out.println("排序后的数组:");for(int num:nums){System.out.print(num+"\t");}}
}

输出结果:

排序前的数组为[4    7    3    9    5    1]

排序后的数组为[1    3    4    5    7    9]

(3)Arrays.toString(array)--将数组转换成字符串

1)按顺序把多个数组元素连在一起,多个数组元素之间使用英文逗号和空格隔开;

2)利用这种方法可以很清楚地观察到各个数组元素的值

3)例:

import java.util.Arrays;public class Test {public static void main(String[] args) {//将数组转换成字符串int[] nums = {10,50,40,30};//将数组按升序排列Arrays.sort(nums);//将数组nums转换成字符串并输出System.out.println(Arrays.toString(nums));}
}

输出结果:[10, 30, 40, 50]

(4)Arrays.fill(arrays,val)--将数组所有元素赋值为相同的值

·例:

public class Test {public static void main(String[] args) {//把数组的所有元素都赋值为8int nums[] = new int[8];Arrays.fill(nums,8);for(int num:nums){System.out.print(num+"\t");}}
}

输出结果:[8 , 8 , 8 , 8 , 8 , 8 , 8 , 8]

(5)Arrays.copyOf()--将数组复制成一个长度为设定值的新数组

1)Arrays类的copyOf(arrays,length)方法可以进行数组复制,把原数组复制成一个新数组,其中length是新数组的长度

2)如果length小于原数组的长度,则新数组就是原数组的前面length个元素

3)如果length大于原数组的长度,则新数组前面的元素就是原数组的所有元素,后面的元素是按数组类型补充默认的初始值,如整型补充0,浮点型补充0.0等

4)例:

import static java.util.Arrays.copyOf;public class Test {public static void main(String[] args) {//把原数组(长度为3)复制成一个长度为6的新数组int nums[] = {1,2,3};int nums2[] = copyOf(nums,6);System.out.println("nums2:");for(int num:nums2){System.out.print(num+"\t");}

输出结果:

nums2:[1    2    3    0    0    0]

(6)Arrays.binarySearch()--查询元素在数组中的下标

1)调用该方法时要求数组中的元素已经按升序排列,这样才能得到正确的结果

2)例:

import java.util.Arrays;public class Test040505 {public static void main(String[] args) {//查询目标元素值在数组中的下标位置int nums[] = {1,2,3,4,5,6,7,8,9};System.out.print(Arrays.binarySearch(nums,5));}
}

输出结果:4

  相关解决方案