学习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("此数组有序");
}
}
}
