java基础算法题(含答案)

2022-07-26,,,

第一次作业:

有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

《java基础算法题(含答案).doc》

下载本文的Word格式文档,以方便收藏与打印。