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