案例一
排序:对10个整数进行按照从小到大的顺序排序
思路分析:用冒泡排序的方法进行排序
代码展示:
public static void main(String[] args) { //对10个整数进行按照从小到大的顺序排序 // 定义10个整数的数组 int[] nums={42,35,64,78,39,26,89,21,97,17}; for (int i = 0; i < nums.length-1; i++) { for (int j = 0; j < nums.length-1-i; j++) { if(nums[j]>nums[j+1]){ int temp=nums[j]; nums[j]=nums[j+1]; nums[j+1]=temp; } } } System.out.println("按照从小到大的顺序排序:"); System.out.print("int[] nums={"); for (int i = 0; i < nums.length; i++) { if(i==nums.length-1){ System.out.print(nums[i]); }else{ System.out.print(nums[i]+","); } } System.out.println("};"); }
运行效果:
案例二
插入数据:有一个已经按升序排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
思路分析:首先判断此数第一次小于数组中哪个元素,然后将此数插入,插入后此元素之后的数,依次后移一个位置。
代码展示:
public static void main(String[] args) { //创建Scanner类对象 Scanner sc=new Scanner(System.in); int[] scores={99,85,83,63,60}; //1)声明一个长度比原来数组长度大1的数组 int[] newScores=new int[scores.length+1]; //2)将原来数组里元素按照顺序存入到新的数组中 for (int i = 0; i < scores.length; i++) { newScores[i]=scores[i]; } System.out.println("插入学生成绩前的数组:"); for (int i : newScores) { System.out.print(i+" "); } System.out.println(); //3)使用Scanner类获取你要增加的学员成绩 System.out.println("请输入你要增加的学员成绩:"); int insert =sc.nextInt(); //设置插入的成绩插入的位置,默认将其插入在数组最后位置 int index=newScores.length-1; //4)通过循环比较获取增加的学员成绩的插入位置 for (int i = 0; i < newScores.length; i++) { if (insert>newScores[i]) { index=i; break; } } //5)从插入元素插入位置开始及之后的元素依次往后移动一位(从最后一个元素开始,倒着移动) for (int i = newScores.length-1; i < index; i--) { newScores[i]=newScores[i-1]; } //6)将要插入的成绩存储到插入位置 newScores[index]=insert; //输出新数组所有元素 System.out.println("插入学生成绩后的数组:"); for (int i : newScores) { System.out.print(i+" "); } }
运行效果:
案例三
逆序:将一个数组逆序输出。
思路分析:定义一个新的数组,长度和原数组长度相同
代码展示:
public static void main(String[] args) { int[] nums={24,53,45,67,38,18,86,46,75}; System.out.print("原始数组为:int[] nums={"); for (int i = 0; i < nums.length; i++) { if (i==nums.length-1) { System.out.print(nums[i]); } else{ System.out.print(nums[i]+","); } } System.out.println("};"); //定义一个新的数组,个数和nums数组个数相同 int[] newNums=new int[nums.length]; System.out.println("数组逆序后:int[] newNums={"); for (int i = 0; i < nums.length; i++) { newNums[i]=nums[nums.length-i-1]; if (i==newNums.length-1) { System.out.print(newNums[i]); } else{ System.out.print(newNums[i]+","); } } System.out.println("};"); }
运行效果:
案例四
元素交换:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
思路分析:把最大和最小取出来,剩下的数据放在一个数组里,然后定义一个新数组,和原数组长度一样,新数组的第一个和最后一个是最大值和最小值,直接放进去,刚才的那个剩下的数据按照顺序放在新数组的中间
代码展示:
public static void main(String[] args) { int[] nums={24,53,45,67,38,18,86,46,75}; //打印输出原始数组 System.out.print("原始数组为:int[] nums={"); for (int i = 0; i < nums.length; i++) { if (i==nums.length-1) { System.out.print(nums[i]); } else{ System.out.print(nums[i]+","); } } System.out.println("};"); //获取最大数 int max=nums[0]; for (int i = 1; i < nums.length; i++) { if(nums[i]>max){ max=nums[i]; } } //获取最小数 int min=nums[nums.length-1]; for (int i = nums.length-1; i > 0; i--) { if(nums[i] min=nums[i]; } } //定义一个排除最大数和最小数的数组 int j = 0; int[] numOthers=new int[nums.length-1]; for (int i = 0; i < nums.length; i++) { if(nums[i]!=max&&nums[i]!=min){ numOthers[j]=nums[i]; j++; } } //打印输出交换后的数组 //定义一个新的数组,个数和nums数组个数相同 int[] newNums=new int[nums.length]; System.out.print("交换后的数组为:int[] newNums={"); for (int i = 0; i < nums.length; i++) { if (i==nums.length-1) { newNums[i]=min; System.out.print(newNums[i]); }else if(i==0){ newNums[i]=max; System.out.print(newNums[i]+","); } else{ newNums[i]=numOthers[i-1]; System.out.print(newNums[i]+","); } } System.out.println("};"); }
运行效果:
案例五
移动:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
思路分析:前面各数后移m个位置,最后m个数就变成前面m个数,说明是将后面m个数放在数组的最前面
* 例如:原数组{24,53,45,67,38,18,86,46,75}
* 将nums数组中的后三位放在前面,在新的数组则为:
* {86,46,75,24,53,45,67,38,18}
代码展示:
public static void main(String[] args) { //有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 //定义一个Scanner键盘输入对象 Scanner sc=new Scanner(System.in); //定义一个数组 int[] nums={24,53,45,67,38,18,86,46,75}; //打印输出原始数组 System.out.print("原始数组为:int[] nums={"); for (int i = 0; i < nums.length; i++) { if (i==nums.length-1) { System.out.print(nums[i]); } else{ System.out.print(nums[i]+","); } } System.out.println("};"); System.out.println("请输入数组后面的几个数放在最前面:"); int court=sc.nextInt(); //定义一个新的数组 int[] newNums=new int[nums.length]; for (int i = 0; i < newNums.length; i++) { if (i newNums[i]=nums[nums.length-court+i]; } else { newNums[i]=nums[i-court]; } } //打印输出新的数组 System.out.print("新的数组为:int[] newNums={"); for (int i = 0; i < newNums.length; i++) { if (i==newNums.length-1) { System.out.print(newNums[i]); } else{ System.out.print(newNums[i]+","); } } System.out.println("};"); }
运行效果: