java.数组基础算法(数组的元素赋值、数组最值、回形数)

1、一个固定的数组(大小为5),随即赋值(1-20),要使其中的元素都不同。

方法一:

package com.wm.lianxi;

public class ArraySuanFa1 {
    public static void main(String[] ages) {
        int[] arr = new int[30000];
        long start= System.currentTimeMillis();//记录初始时间
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 30000) + 1;
            boolean flag = false;
            while (true) {
                for (int j = 0; j < i; j++) {
                    if (arr[i] == arr[j]) {
                        flag = true;
                        break;
                    }
                }
                //给其重新赋值。
                if (flag) {
                    arr[i] = (int) (Math.random() * 30000) + 1;
                    flag = false;
                    continue;
                }
                break;
            }
            //System.out.println(arr[i] + " ");           
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + " ");
        }
        long end= System.currentTimeMillis();
            long x=end-start;
            System.out.println("执行时间为:"+x+"毫秒");
    }
}

方法二:

package com.wm.lianxi;

public class ArraySuanFa2 {
    public static void main(String[] ages) {
        int[] arr = new int[30000];
        long start= System.currentTimeMillis();//记录初始时间
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) (Math.random() * 30000) + 1;
            
                for (int j = 0; j < i; j++) {
                    if (arr[i] == arr[j]) {
                        i--;
                        break;
                    }
                }
                //System.out.println(arr[i] + " ");
            }
                        
        
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + " ");
        }
        long end= System.currentTimeMillis();
            long x=end-start;
            System.out.println("执行时间为:"+x+"毫秒");
    }
}
2、输入有一个数i,得到i行i列的一个有规律的图形,其规律如下(回形数):

方法一:package com.wm.lianxi;

import java.util.Scanner;

public class ArrayHuiXingShu {
    public static void main(String[] args) {
        
        Scanner scnner = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int len = scnner.nextInt();
        int[][] arr = new int[len][len];
        int s = len * len;
        int k = 1;// k=1:向右,k=2:向下,k=3:向左,k=4:向上。
        int i = 0, j = 0;
        for (int m = 1; m <= s; m++) {
            if (k == 1) {
                if (j < len && arr[i][j] == 0) {
                    arr[i][j++] = m;
                } else {//改变方向。
                    k = 2;
                    i++;//换行
                    j--;//复原
                    m--;//复原
                }
            } else if (k == 2) {
                if (i < len && arr[i][j] == 0) {
                    arr[i++][j] = m;
                } else {
                    k = 3;
                    i--;
                    j--;
                    m--;
                }
            } else if (k == 3) {
                if (j >= 0 && arr[i][j] == 0) {
                    arr[i][j--] = m;
                } else {
                    k = 4;
                    i--;
                    j++;
                    m--;
                }
            } else if (k == 4) {
                if (j >= 0 && arr[i][j] == 0) {
                    arr[i--][j] = m;
                } else {
                    k = 1;
                    i++;
                    j++;
                    m--;
                }
            }
        }
        System.out.println(arr[1][1]);
        System.out.println(arr[1][3]);
        for( i=0;i<arr.length;i++){
            for(j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }

    }
}
方法二:

package com.wm.lianxi;

import java.util.Scanner;

public class ArrayHuiXingShu {
    public static void main(String[] args) {
        Scanner scnner = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int  n = scnner.nextInt();
        int [][] arr=new int[n][n];
        int count =0;
    int maxX=n-1;//x轴最大下标
        int maxY=n-1;//y轴最大下标
        int minX=0;//x轴最小下标
        int minY=0;//y轴最小下标
        while(minX<=maxX){
            for(int x=minX;x<=maxX;x++)
            {
                arr[minY][x]=++count;
            }
            minY++;
            for(int y=minY;y<=maxY;y++){
                arr[y][maxX]=++count;
            }
            maxX--;
            for(int x=maxX;x>=minX;x--){
                arr[maxY][x]=++count;
            }
            maxY--;
            
            for(int y=maxY;y>=minY;y--){
                arr[y][minX]=++count;
            }
            minX++;
        }
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
        
    }
    
}    

3.随机数求最值与和值。

package com.wm.lianxi;

public class ArrayTestZui {
public static void main(String[] args) {
    int [] arr=new int[10];
    for(int i=0;i<arr.length;i++){
        arr[i]=(int)(Math.random()*(99-10+1)+10);//[10,99]
    }
    for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"\t");
    }
    System.out.println();
     //最大值;
    int maxValue=arr[0];
    for(int i=1;i<arr.length;i++){
        if(maxValue<arr[i]){
            maxValue=arr[i];
        }
    }
    System.out.println("最大值为:"+maxValue);
     //最小值:
    int minValue=arr[0];
    for(int i=1;i<arr.length;i++){
        if(minValue>arr[i]){
            minValue=arr[i];
        }
    }
    System.out.println("最小值为:"+minValue);
     //总和:
    int sum=0;
    for(int i=0;i<arr.length;i++){
        sum+=arr[i];
    }
    
    System.out.println("总和为:"+sum);
     //平均数:
    int avgValue=sum/arr.length;
    System.out.println("平均数为:"+avgValue);
    
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值