随机数,排序算法,以及数组获取重复元素次数的方法

/*
        a)生成 20个取值范围在 0-20(包含20)之间的随机数,并将其存放到数组中
        b)求数组中这 20个随机数的总和和平均数,平均数取整即可,不考虑小数点
        c)采用排序算法,这 20个整数按照从小到大排序后输出(自己写排序算法,不要调用Arrays的方法。)
        d)实现对排序后的数字进行出现次数的统计,要求输出的顺序和排序的顺序一致,
          (不使用集合,不能对数组进行删减)
 */
import java.util.Arrays;
import java.util.Random;

public class Demo01 {
    public static void main(String[] args) {
        Random r = new Random();//实例化Random对象
        int[] ints = new int[20];//实例化数组
        int sum =0;//初始化总和
        int ave = 0;//初始化平均数
        for (int i = 0; i < ints.length; i++) {
            int ranNum = r.nextInt(21);//获取int类型的随机数
            ints[i]= ranNum;//将随机数存进ints数组
            sum += ints[i];//等同于 sum = sum+ ints[i];求和
            ave = sum / 20;//求平均数
        }
        //没有重写 Arrays的 toString 方法,所以打印需要调用 Arrays类的 toString方法,直接打印会显示内存地址而不是数组
        System.out.println("排序前数组:"+ Arrays.toString(ints));
        System.out.println("总和为"+sum);
        System.out.println("平均数为"+ave);
        //使用十大排序算法之一的冒泡排序进行排序
        for (int i = 0; i < ints.length-1; i++) {//外层循环控制比较轮数
            for (int j = 0; j < ints.length-1-i; j++) {//内层循环控制比较次数,每一轮减少了一个比较数
                if(ints[j] > ints[j+1]){//当前者大于后者则进行调换位置
                    int temp = ints[j+1];
                    ints[j+1] = ints[j];
                    ints[j] = temp;
                }
            }
        }
        System.out.println("排序后数组:"+Arrays.toString(ints));
        for (int i = 0; i < ints.length; i++) {//i为打印次数,ints.length-1为最后一次打印
            int count = 0;
            if(i != ints.length-1 && ints[i] == ints[i+1]){
                continue;//前后数相等并且不是最后一次打印时跳过打印
            }
            for (int k:ints) {//foreach循环遍历 ints[],当 k与 ints[]其中一个数相等时,次数+1
                if(ints[i] == k){//ints[i]表示ints[]其中任意一个数
                    count++;
                }
            }
            System.out.println(ints[i]+"出现的次数为"+count+"次");
        }
    }
}

打印结果为:

排序前数组:[6, 10, 7, 7, 9, 1, 13, 4, 6, 16, 17, 7, 4, 8, 13, 18, 10, 19, 7, 18]
总和为200
平均数为10
排序后数组:[1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 9, 10, 10, 13, 13, 16, 17, 18, 18, 19]
1出现的次数为1次
4出现的次数为2次
6出现的次数为2次
7出现的次数为4次
8出现的次数为1次
9出现的次数为1次
10出现的次数为2次
13出现的次数为2次
16出现的次数为1次
17出现的次数为1次
18出现的次数为2次
19出现的次数为1次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老年人程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值