java基础算法题(含答案)
程序员文章站
2022-06-24 18:57:30
第一次作业:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?输出格式为:123124134…共有**个//答案示例int num = 0;//总数for (int x = 1 ; x < 5 ; x++){//循环百位 for (int y = 1 ; y < 5 ; y++){//循环十位 if (y == x){//如果百位和十位相等就跳出这层循环 continue; } for (int z = 1 ; z &...
第一次作业:
有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?
输出格式为:
123
124
134
…
共有**个
//答案示例
int num = 0;//总数
for (int x = 1 ; x < 5 ; x++){//循环百位
for (int y = 1 ; y < 5 ; y++){//循环十位
if (y == x){//如果百位和十位相等就跳出这层循环
continue;
}
for (int z = 1 ; z < 5 ; z++){//循环个位
if (z != x && z != y){
num++;//总数+1
System.out.println(100*x+10*y+z);//输出
}
}
}
}
System.out.println("共有"+num+"个");
//输出结果:
//123
//124
//132
//134
//142
//143
//213
//214
//231
//234
//241
//243
//312
//314
//321
//324
//341
//342
//412
//413
//421
//423
//431
//432
//共有24个
问题1:在第5行跳出这层循环有什么好处,在下方留言
第二次作业
public static void main(String[] args) {
int[] oneArr = {5,4,7,8,4,21,4};
//补充代码,调用sortArr方法,然后依次输出数组的元素
/*
结果示例:
1.oneArr = {5,4,7,8,4,21,4},type = true;
输出:
4
5
7
8
21
2.1.oneArr = {5,4,8,1,44,20,12},type = false;
输出
44
20
12
8
5
4
1
*/
}
public static int[] sortArr(int[] oneArr , boolean type){
//补充代码,使当type = true时返回升序排序后的数组,当type = false时返回降序排序的数组(注意,要去掉重复数字
}
//答案示例
public static void main(String[] args) {
int[] oneArr = {5,4,7,8,4,21,4};
boolean type = true;//升序排序
//获取升序排序数组(降序就把true改成false
int[] data = sortArr(oneArr,type);
//输出
System.out.println((type?"升序":"降序")+"排序为:");
for (int x = 0 ; x < data.length ; x++){
System.out.println(data[x]);
}
}
public static int[] sortArr(int[] oneArr , boolean type){
int temp;
//方法1:面向过程,用冒泡排序
//升序排序数组
for(int i = 0; i<oneArr.length; i++){//从第一个元素循环到最后一个
for (int j = oneArr.length-1; j > i; j--) {//从最后一个元素循环到当前的i
if (oneArr[j] < oneArr[j - 1]) {//如果后者小于前者,2者调换位置
temp = oneArr[j - 1];
oneArr[j - 1] = oneArr[j];
oneArr[j] = temp;
}
}
}
//方法2:面向对象,用Arrays.sort()方法实现排序数组
// Arrays.sort(oneArr);
//降序排序
if (!type){//如果为降序排序,则把oneArr转过来
// 遍历数组前一半
for(int i = 0;i < oneArr.length / 2;i++){
// 交换元素
temp = oneArr[oneArr.length -i - 1];
oneArr[oneArr.length -i - 1] = oneArr[i];
oneArr[i] = temp;
}
}
//去掉重复字
int[] newArr = new int[oneArr.length];
int y = 0;//newArr的当前下标
int ordNum = 0;//上一个输出的数
for (int x = 0 ; x < oneArr.length ; x++){
if (oneArr[x] != ordNum || x==0){
ordNum = oneArr[x];
newArr[y] = ordNum;
y++;//newArr的当前下标后移一位
}
}
//这时候newArr = [*,*,*,*,0,0,0,]后oneArr.length-y的数字是0;
System.out.println("newArr:"+Arrays.toString(newArr));
int[] newArr1 = new int[y];//定义一个长度为y的数组,把newArr的前y个数复制到newArr1中
for (int z = 0 ; z < y ; z++){
newArr1[z] = newArr[z];
}
System.out.println("newArr1:"+Arrays.toString(newArr1));
return newArr1;
}
问题2:在第51行的x==0的作用是什么,在下方留言
本文地址:https://blog.csdn.net/weixin_45824323/article/details/110849050
推荐阅读