数组的常见算法1

数组的常见算法题(1)

一、数值型数组特征值统计

案例1:特征值计算

 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,总和,平均值,并输出出来。
 要求:所有随机数都是两位数:[10,99]
 提示:求[a , b]范围内的随机数:(int)(Math.random() * (b - a + 1)) + a;
代码实现:
案例1
输出结果:
案例1输出

案例2:特征值计算

分析以下代码。并用代码实现:
(1)在编程竞赛中,有10位评委为参赛的选手打分,分数分别为:5,4,6,8,9,0,1,2,7,3
(2)求选手的最后得分(去掉一个最高分和一个最低分后其余8位评委打分的平均值)

代码实现:
案例2
输出结果:
案例2输出结果

二、数组元素的赋值(常使用)

案例1:杨辉三角打印

要求:使用二维数组打印一个10行杨辉三角
提示:
1.第一行有1个元素,第n行有n个元素
2.每一行的第一个元素和最后一个元素都是1
3.从第三行开始,对于非第一个元素和最后一个元素的元素。即:yanghui[ i ][ j ] = yanghui[ i-1 ][ j-1 ] + yanghui[ i-1 ][ j ];
代码实现:
杨辉三角
输出结果:
杨辉三角输出

案例2:回型数(难)

要求:从键盘输入一个整数(1~20),则以该数字为矩阵的大小,把1,2,3…n*n的数字按照顺时针螺旋的形式填入其中。
举例1:输入数字3
1 2 3
8 9 4
7 6 5
举例2:输入数字2
1 2
4 3
代码实现:

在这里插入代码片
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int len = scan.nextInt();
        int[][] arr = new int[len][len];
        int s = len*len;
        int i = 0;
        int j = 0;
        int k = 1;
        
        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 (i >= 0 && arr[i][j] == 0){
                    arr[i--][j] = m;
                }else {
                    k=1;
                    i++;
                    j++;
                    m--;
                }
            }
        }
        for (int l = 0; l < len; l++) {
            for (int m = 0; m < len; m++) {
                System.out.print(arr[l][m]+"\t");

            }
            System.out.println();

        }
        scan.close();
    }
}

![回形数](https://img-blog.csdnimg.cn/b7ae71d0c46c4da48aec87e4e1fbd927.png
输出结果:
输出结果

三、元素反转

案例1:

定义数组: int[ ] arr = new int[]{34,54,3,2,65,7,34,5,76,34,67};如何实现数组元素的反转存储?你有几种方法。
代码实现1:



public class Demo {
    public static void main(String[] args) {
        /*定义数组: int[ ] arr = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        如何实现数组元素的反转存储?你有几种方法。*/
        int[] arr = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        int tmp = 0;
            // 元素反转
            for (int j = 0; j < arr.length/2; j++) {
                tmp = arr[(arr.length-1)-j];
                arr[(arr.length-1)-j] = arr[j];
                arr[j]= tmp;
            }
            //遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");

        }
    }
}

输出结果:
输出
代码实现2:双指针



public class Demo {
    public static void main(String[] args) {
        //定义数组: int[ ] arr = new int[]{34,54,3,2,65,7,34,5,76,34,67};如何实现数组元素的反转存储?你有几种方法。
        int[] arr = new int[]{34,54,3,2,65,7,34,5,76,34,67};
        int tmp = 0;
            // 元素反转
            for (int i=0,j = arr.length-1; i < j; i++,j--) {
                tmp = arr[i];
                arr[i]= arr[j];
                arr[j]= tmp;
            }
            //遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");

        }
    }
}

输出结果:
输出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爪哇哇哇哇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值