习题1
1.给定一个包含红色,白色和蓝色,共n个元素的数组nums,原地对他们进行排序,使得相同颜色的元素相邻,并按照共色,白色,蓝色顺序排列。
我们使用整数0,1,2分别表示红色,白色,蓝色
package maopao; import java.util.*; public class chapter1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []nums=new int[n]; for(int i=0;i<n;i++) { nums[i]=scan.nextInt(); } for(int i=1;i<n;i++) { for(int j=0;j<n-i;j++) { if(nums[j]>nums[j+1]) { int tmp=nums[j+1]; nums[j+1]=nums[j]; nums[j]=tmp; } } } for(int i:nums) { System.out.print(i+" "); } Set<Integer> set=new HashSet<>(); for(int i=0;i<n;i++) { set.add(nums[i]); } System.out.println(""); for(int i:set) { System.out.print(i+" "); } } }
习题2
有一个长度为7的无序数组,按照从小到大的顺序排序后输出
输入描述
数组中的数据
输出描述
数组中数据排序后的输出
示例
输入 13 11 9 7 5 3 1
输出 1 3 5 7 9 11 13
第一种办法是利用Arrays.sort完成升序
package maopao; import java.util.*; public class chapter2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int []arr=new int[7]; for(int i=0;i<7;i++) { arr[i]=scan.nextInt(); } Arrays.sort(arr); System.out.print("从小到大排序为:"); for(int i:arr) { System.out.print(i+" "); } } }
第二种办法是依赖于冒泡排序
package maopao; import java.util.*; public class chapter2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int []arr=new int[7]; for(int i=0;i<7;i++) { arr[i]=scan.nextInt(); } for(int i=1;i<7;i++) { //次数 for(int j=0;j<7-i;j++) { //数组 if(arr[j]>arr[j+1]) { int tmp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=tmp; } } } for(int i:arr) { System.out.print(i+" "); } } }
习题3
愚人节,灰太狼为了给红太狼惊喜,研发了羊羊打印仪,能够利用青草打印小羊们的模样,于是,灰太狼历经磨难,取来了喜羊羊 懒洋洋 美羊羊 沸羊羊 暖洋洋的毛发。利用这些毛发,他们打印出了羊羊们,叫来红太狼,红太狼很高兴,认为最肥美的杨应该先使用,就和灰太狼善良这从肥到瘦的顺序开始吃,请你设计一个算法,随机输入小羊的体重,并按降序将其输出。
package maopao; import java.util.*; public class chapter2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []arr=new int[n]; for(int i=0;i<n;i++) { arr[i]=scan.nextInt(); } for(int i=1;i<n;i++) { //次数 for(int j=0;j<n-i;j++) { //数组 if(arr[j]<arr[j+1]) { int tmp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=tmp; } } } for(int i:arr) { System.out.print(i+" "); } } }
习题4
案例描述:一组数据中记录了五只小猪的体重,找出并打印最重的小猪
package maopao; import java.util.*; public class chapter4 { public static void main(String args[]) { Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []arr=new int[n]; for(int i=0;i<n;i++) { arr[i]=scan.nextInt(); } for(int i=1;i<n;i++) { for(int j=0;j<n-i;j++) { if(arr[j]>arr[j+1]) { int tmp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=tmp; } } } System.out.println(arr[n-1]);//数组下标是从0开始到n-1总共n个值 } }