java求数组最大值、最小值和下标位置、数组相邻值

     int data[]=new int[]{1,3,2,50,60,52};
        int max=data[0],min=data[0];
        for(int i=1;i<data.length;i++){
            if(max<data[i]){
                max=data[i];
                maxid=i;
            }
            if(min>data[i]){
                min=data[i];
                minid=i;
            }
        }
        // 60---main43---1---4---0
        Log.e("TAG",max+"---main43---"+min+"---"+maxid+"---"+minid);

实现思路:

设置两个临时变量t1,t2,然后遍历数组,t1始终保存较大值,t2保存较小值,遍历完毕,就能得到一个最大值t1,最小值t2。

(2)求java数组相邻值大于某个数,比如10,打印出新的数组,这个东西是做数据分析的,把一些无关紧要的数据剔除,剩下显眼的数据来进行显示

    //  java  求 相邻值  差距大于10的元素

        res  = new int[data.length];
        for(int i=1;i<data.length;i++){
            if(i>0 && i<data.length-1){
                if (Math.abs(data[i]-data[i-1])>10){
                    res[i] = data[i];
                    //    position.add(maxid);
                }else{
                    res[i]=0;
                }
            }
        }
        for (int i=0;i<res.length;i++){
            Log.e("TAG","wabfs---"+  res[i]);
        }

 

以下是汇编语言实现求最大值最小值和平均的示例代码: ; 求最大值 section .data data1 db 10, 20, 30, 40, 50 max db 0 section .text global _start _start: mov al, [data1] ; 将第一个数存入 al 中 mov bl, al ; 让 bl 初始等于 al loop_start: cmp al, [data1 + 1] ; 比较 al 和下一个数的大小 jle not_greater ; 如果 al 不大于下一个数,跳过赋操作 mov al, [data1 + 1] ; 将下一个数赋给 al not_greater: inc byte [data1] ; 将 data1 的地址加 1,指向下一个数 cmp byte [data1], 50 ; 如果 data1 指向的地址已经是最后一个数,跳出循环 jne loop_start mov [max], al ; 将最大值存入 max 中 ; 最小值 section .data data2 db 30, 40, 10, 20, 50 min db 0 section .text global _start _start: mov al, [data2] ; 将第一个数存入 al 中 mov bl, al ; 让 bl 初始等于 al loop_start: cmp al, [data2 + 1] ; 比较 al 和下一个数的大小 jge not_less ; 如果 al 不小于下一个数,跳过赋操作 mov al, [data2 + 1] ; 将下一个数赋给 al not_less: inc byte [data2] ; 将 data2 的地址加 1,指向下一个数 cmp byte [data2], 50 ; 如果 data2 指向的地址已经是最后一个数,跳出循环 jne loop_start mov [min], al ; 将最小值存入 min 中 ; 平均 section .data data3 db 10, 20, 30, 40, 50 sum dw 0 count dw 5 average dw 0 section .text global _start _start: mov cx, [count] ; 将 count 存入 cx 中,表示循环次数 mov si, 0 ; 将 si 置为 0,表示数组下标从 0 开始 loop_start: mov al, [data3 + si] ; 将 data3[si] 存入 al 中 add [sum], ax ; 将 al 的加入 sum 中 inc si ; 将 si 加 1,指向下一个数 loop loop_start ; 循环 count 次 mov bx, [count] ; 将 count 存入 bx 中 mov ax, [sum] ; 将 sum 存入 ax 中 cwd ; 将 ax 扩展到 dx:ax div bx ; 将 ax 除以 bx,商存于 ax,余数存于 dx mov [average], ax ; 将平均存入 average 中 上述代码的实现原理是: - 求最大值:依次比较数组相邻两个数的大小,将较大的数存入 al 中,最后将 al 的存入 max 中,即为最大值。 - 最小值:依次比较数组相邻两个数的大小,将较小的数存入 al 中,最后将 al 的存入 min 中,即为最小值。 - 平均:将数组中所有数的和存入 sum 中,再将 sum 除以数组长度,商即为平均
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值