题目:给定100个整数的集合,随即取出10个不相等的整数并正序排序(排序算法自定,请认真解析题干)

代码:

public class Test {
    public static void main(String[] args) {
        Random random = new Random();
        // 生成测试数据
        List<Integer> list = new ArrayList<>();
        StringBuilder sb1 = new StringBuilder(); // 存储100个测试数据,然后输出到控制台
        for (int i = 0; i < 100; i++) {
            int num = random.nextInt(100);
            list.add(num);
            sb1.append(i).append(" ");
        }
        System.out.println("测试数据:" + sb1.toString()); // 输出100个测试数据

        // 往set集合里面放置10个元素
        Set<Integer> set = new HashSet<>();
        int count = 0;
        while (count < 10) {
            if (set.add(list.get(random.nextInt(100)))) count++;
        }

        // 把set集合中的元素全部放入数组中
        int[] arr = new int[10];
        int n = 0;
        StringBuilder sb2 = new StringBuilder(); // 存储选出的10个数据
        for (Integer i : set) {
            arr[n++] = i;
            sb2.append(i).append(" ");
        }
        System.out.println("选出数据:" + sb2.toString()); // 输出选出的10个数据

        // 使用冒泡排序对数组进行排序
        boolean exchange = true;
        for (int i = 1; i < arr.length && exchange; i++) {
            exchange = false;
            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                    exchange = true;
                }
            }
        }
        // 输出冒泡排序的内容
        StringBuilder sb3 = new StringBuilder();
        for (int i : arr) {
            sb3.append(i).append(" ");
        }
        System.out.println("排序结果:" + sb3.toString());
    }
}

结果:

测试数据:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
选出数据:16 1 34 99 20 8 73 44 62 47 
排序结果:1 8 16 20 34 44 47 62 73 99 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值