java数组算法进阶

复制代码
package com.itheima;

import java.util.Random;

public class arrayoftentrain {
    public static void main(String[] args) {
        //求最值
        int[] arr1 = new int[]{33,5,22,44,55};
        int max = arr1[0];
        for (int i = 1; i < arr1.length; i++) {
            if(max < arr1[i])
                max = arr1[i];
        }
        System.out.println(max);




        //需求:生成10个1~100之间的数存入数组'
        //1.求和 2.求平均数 3.统计有多少个数据比均值小
        //一步一步来
        //先创建一个数组 , 再用循环存入十个1~100的数字
        int[] arr2 = new int[10];
        Random r = new Random();
        int sum = 0;

        int count = 0;
        for (int t = 0; t < arr2.length; t++) {
            int randnumber = r.nextInt(100) + 1;
            arr2[t] = randnumber; //存入
            //可以边存入边求和
            sum = sum + arr2[t];
        }
        System.out.println("总和为:" + sum);


        //求均值
        double avg = sum*1.0 / arr2.length;
        System.out.println("均值为:" + avg);

        //求个数
        for (int k = 0; k < arr2.length; k++) {
            if(arr2[k] < avg){
                count++;
            }
        }
        System.out.println("个数为:" + count);



        //交换数组中的数据
        int temp;
        int[] arr4 = new int[]{1,2,3,4,5};
        for (int i = 0 ,  j = arr4.length-1; i<j ; i++,j--) {
            temp = arr4[i];
            arr4[i] = arr4[j];
            arr4[j] = temp;
        }

        //遍历
        for (int q = 0; q < arr4.length; q++) {
            System.out.print(arr4[q] + " "); //println 和 print不同 println就相当于在print后面加了个隔行符("\n")
        }

        System.out.println("\n");

        //打乱数组数据
        //思路:就是给索引进行操作 随机给索引一个值 让索引加上这个值 然后这两个索引的值进行交换
        int[] arrs1 = new int[]{1,2,3,4,5};
        Random sr = new Random();

        int n=arrs1.length-1,m = 0;
        int swap;
        while(n >= 0){
            int randnumber = sr.nextInt(n+1);//随机索引已就绪

            swap = arrs1[m];
            arrs1[m] = arrs1[randnumber + m];
            arrs1[ randnumber + m ] = swap;

            n--;
            m++;

        }

        for (int i = 0; i < arrs1.length; i++) {
            System.out.print(arrs1[i] + " ");
        }
    
        //我写的这个是比较复杂一点的,就是当原索引+1的时候,我让随机索引取值的范围-1
        
        //当然也有简单的 ↓↓↓↓↓↓
//        int[] arrs1 = new int[]{1,2,3,4,5};
//        Random sr = new Random();
//
//        int n =arrs1.length,m = 0;
//        int swap;
//        for (int i = 0; i < arrs1.length; i++) {
//            int randomnumber = sr.nextInt(5);
//            swap = arrs1[i];
//            arrs1[i] = arrs1[randomnumber];
//            arrs1[randomnumber] = swap;
//        }
//        for (int i = 0; i < arrs1.length; i++) {
//            System.out.print(arrs1[i] + " ");
//        }
    }
}
相关推荐
草履虫建模1 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq3 小时前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq4 小时前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
qq_297574674 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚4 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学4 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509284 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚4 小时前
Java入门17——异常
java·开发语言
爱吃rabbit的mq4 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
缘空如是4 小时前
基础工具包之JSON 工厂类
java·json·json切换