有10个数字要求分别用选择法和冒泡法从大到小输出

本文介绍了如何在Java中使用选择法和冒泡法对10个随机生成的整数数组进行从大到小排序,详细展示了选择排序和冒泡排序的过程以及关键代码实现。

/*
* 有10个数字要求分别用选择法和冒泡法从大到小输出
* */
public static void main(String[] args) {
    /*
     *
     * 思路:
     *   1、随机生成十个数字
     *   2、选择排序
     *   3、冒泡排序
     *
     * */


    //随即生成10个数字(0~20)存入数组中
    Random random = new Random();
    int[] arr = new int[10];
    System.out.println("初始数组:");
    for (int i = 0; i < arr.length; i++) {
        arr[i] = random.nextInt(21);
        System.out.print(arr[i] + " ");
    }
    System.out.println();


    //选择排序 每次排序结束 自变量自加 数组长度自减
    //初始化左右两边的索引
    int maxLeft = 0;
    int minRight = arr.length - 1;
    while (minRight > maxLeft) {
        //同时选择最大值和最小值 并初始化 假设最大值时第一个 最小值是最后一个
        //初始化最小值和最大值的索引
        int minIndex = minRight;
        int maxIndex = maxLeft;
        for (int i = maxLeft; i <= minRight; i++) {//这里千万要调用外部变量 不要调用循环内的变量,不然会意外退出


            if (arr[maxIndex] < arr[i]) {
                maxIndex = i;
            }
            if (arr[minIndex] > arr[i]) {
                minIndex = i;
            }


        }


        /*
         * 在这里有个不需要注意的点:
         *   有的同学比较好奇,为什么不把最大最小值的交换放在if判断语句里
         *   因为for循环里面有两个判断语句,会相互影响
         *   选择排序的核心思想是每次从未排序的部分中选择最小(或最大)的元素,并将其放置在已排序部分的末尾。
         * 在选择排序的实现中,我们需要使用一个临时变量来存储最小元素的值,并将其与当前位置的元素进行交换。
         * 选择排序的互换操作不能写在if语句里,因为if语句只是用来判断最小元素的位置,并不会进行实际的交换操作。
         * 如果我们将互换操作写在if语句里,那么每次判断都会进行一次交换操作,这样会导致排序结果错误。
         *


         * */
        //存储最大值在最左端
        int temp = arr[maxIndex];
        arr[maxIndex] = arr[maxLeft];
        arr[maxLeft] = temp;


        if (minIndex == maxLeft) {
            minIndex = maxIndex;
        }


        //存储最小值在最右端
        temp = arr[minIndex];
        arr[minIndex] = arr[minRight];
        arr[minRight] = temp;


        minRight--;
        maxLeft++;
    }
    System.out.println("选择排序:");
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
    System.out.println();




    //冒泡排序
    for (int i = 0; i < arr.length - 1; i++) {
        for (int j = 0; j < arr.length - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    System.out.println("冒泡排序:");
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }


}
这里我将两种排序写在一起了,如果想要验证只需要将另一个代码段注释掉即可
输出结果:
1. MT7620N路由器硬件组成:MT7620N路由器基于Mediatek MT7620芯片,该芯片具备完整的无线路由器功能,包括无线接入点(AP)路由功能。MT7620芯片特点包括: - 集成IEEE802.11n MAC/基带/2.4GHz射频模块,提供无线网络接入。 - 内置580MHz MIPS 24K处理器,高效处理数据传输路由任务。 - 集成5端口百兆以太网交换机,实现有线网络连接。 - 提供两个RGMII接口,支持更高带宽的网络连接。2. 百兆交换机功能: - 在MT7620N路由器中,集成的5端口百兆交换机负责处理局域网内的有线数据交换任务。 - 每个端口可以独立支持最高100Mbps的数据传输速率。3. IEEE802.11n标准: - IEEE802.11n是一种无线局域网通信协议,提供高速无线连接,最高传输速率可达300Mbps。 - 它允许通过MIMO(多输入多输出)技术数据流的捆绑来提升速率信号的可靠性。4. MIPS架构处理器: - MIPS架构是一种精简指令集计算(RISC)架构处理器,被广泛用于嵌入式系统。 - 580MHz的主频能够提供良好的性能,适用于处理路由、安全以及VoIP等高级网络应用。5. PCB与Gerber文件: - PCB是印刷电路板( Printed Circuit Board),是电子组件的物理载体。 - Gerber文件是用于PCB设计制造的行业标准格式,包含了制作印刷电路板所需的所有相关信息。6. BOM(物料清单): - BOM是Bill of Materials的缩写,是生产过程中所需所有材料的详细清单。 - SX-LY-08A(4M+32M)BOM.xlsSX-LY-08A(8M+64M)BOM.xls代表不同配置的物料清单文件,可能涉及到不同存储容量的路由器版本。7. 烧录软件固件: - 烧录软件用于将固件(固化的软件程序)写入路由器的存储设备中。 - 固件是运行在路由器硬件上的操作系统程序,提供设备功能管理界面。8. 测试报告: - 测试报告是产品经过严格测试后得出的文档,记录了产品的性能、稳定性、兼容性等测试结果。 - 通过测试报告可以评估MT7620N路由器在量产前的品质功能标准。9. SMT贴片资料: - SMT(表面贴装技术)是电子组件安装到PCB板上的过程。 - 贴片资料包含了在SMT过程中应用的贴片技术说明、工艺参数等信息。10. QA工具: - QA工具是用于质量保证的工具,可以是软件或硬件。 - 它们用于确保产品在生产过程中的质量符合技术规格。通过这些生产资料,可以深入理解MT7620N 5口路由器的硬件设计、制造过程质量控制等各个方面。这些信息对于进行硬件维修、兼容性测试、固件开发等工作至关重要,能够确保路由器产品的可靠性与性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值