学习java随堂练习-20220610
今天是学习Java的第九天 3道练习题
第1题
题目:
1、一组乱序的字符序列m、b、p、f、a、u、z,请用冒泡排序算法,使之按字母表顺序排列
运行结果:
代码如下:
/** * 1、一组乱序的字符序列m、b、p、f、a、u、z,请用冒泡排序算法,使之按字母表顺序排列 * */ public class array01 { public static void main(String[] args) { char[] chara = { m,b,p,f,a,u,z}; int len = chara.length; for(int i = 0;i<len-1;i++) { boolean flag = false;//false表示没交换 true表示交换过 for(int j = 0;j<len-1-i;j++) { if(chara[j]>chara[j+1]) { char temp = chara[j]; chara[j]= chara[j+1]; chara[j+1]=temp; flag = true; } } if(!flag) { break; } } for(char n:chara) { System.out.print(n+" "); } } }
第2题
题目:
2、一组有序的字符序列a、b、c、e、f、p、u、z,向次字符序列中插入一个新的字符,要求插入之后字符序列仍保持有序
运行结果:
代码如下:
/** * 2、一组有序的字符序列a、b、c、e、f、p、u、z, * 向次字符序列中插入一个新的字符,要求插入之后字符序列仍保持有序 * */ public class array02 { public static void main(String[] args) { char[] char1 = { a,b,c,e,f,p,u,z};//第1个数组 int len1 = char1.length; char[] char2 = new char[len1+1];//第2个数组 char cha = d;//插入d /** * 分析:插入d * char1 a b c e f p u z * char2 a b c d * [] 0 1 2 3 4 * count 1 2 3 4 5 * */ int count = 0;//记录插入了几个元素 for(int i = 0;i<len1;i++) { //循环插入char1中比待插元素小的元素 if(char1[i]<=cha) { char2[i]=char1[i]; count++; } } char2[count]=cha;//插入待插元素 //循环插入剩余char1的元素 for(int j = count;j<len1;j++) { //这里count的值正好是剩余char1元素中第一个元素的下标 char2[j+1]=char1[j]; } for(char n:char2) { //打印输出 System.out.print(n+" "); } } }
第3题
题目:
3、判断一个数组是否有序(选做)
运行结果:
代码如下:
/** * 3、判断一个数组是否有序(选做) * */ import java.util.Scanner; public class array03 { public static void main(String[] args) { //int[] nums = {11000,2,100,4,5,8,7,9,10,11}; int[] nums = new int [10]; System.out.println("请输入一个数组:"); Scanner input = new Scanner(System.in); for(int i=0;i<10;i++) { nums[i] = input.nextInt(); } /** * 思路:分别判断这个数组是否是正序,是否是逆序。若是两者其中之一,则有序,否则无序。 * */ boolean flag1 = true;//false表示无序,true表示正序 for(int j=1;j<10;j++) { if(nums[j-1]>nums[j]) { //只要出现相邻两个逆序,则为false flag1 = false; break; } }//循环结束时flag1=false说明不是正序 boolean flag2 = true;//false表示无序,true表示逆序 for(int j=1;j<10;j++) { if(nums[j-1]<nums[j]) { //只要出现相邻两个正序,则为false flag2 = false; break; } }//循环结束时flag2=false说明不是逆序 //既不是正序,又不是逆序,则是无序 if(flag1==false && flag2==false) { System.out.println("此数组无序"); }else { //无序的对立事件是有序 System.out.println("此数组有序"); } } }