欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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