当前位置:   article > 正文

java基础算法题(含答案)_java算法题库及答案解析

java算法题库及答案解析

第一次作业:

有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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

问题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时返回降序排序的数组(注意,要去掉重复数字

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
//答案示例
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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

问题2:在第51行的x==0的作用是什么,在下方留言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/494767
推荐阅读
相关标签
  

闽ICP备14008679号