You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何对int数组排序?请解释示例中1与3的比较逻辑

数组升序排序中1与3的比较过程解析

实现代码

public class SortArr {

    public static void sortAsc(int[] arr) {
        int temp = 0; // 交换时存储临时值
        for (int i = 0; i < arr.length-1; i++) { // 外层循环:固定当前要确定位置的元素
            for (int j = i + 1; j < arr.length; j++) { // 内层循环:遍历后续所有元素进行比较
                if (arr[i] > arr[j]) { // 如果当前元素大于后续元素则交换
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

    public static void main(String args[]) {
        int array[] = {5, 3, 1};
        System.out.println( "Array values before sorting:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+ "  ");
        }
        System.out.println();
        sortAsc(array);
        System.out.println( "Array values after sorting:");
        for (int i = 0 ; i < array.length; i++){
            System.out.print(array[i]+ "  ");
        }
    }
}

运行输出

Array values before sorting:
5  3  1  
Array values after sorting:
1  3  5 

1与3的比较过程详解

这段代码采用选择排序逻辑,1与3的比较发生在第一轮外层循环的内层循环阶段,具体步骤如下:

  1. 初始数组状态:{5, 3, 1}
  2. 第一轮外层循环(i=0):
    • 外层循环固定索引0的位置,目标是找到整个数组中最小的元素放到这里。
    • 内层循环先执行j=1:比较arr[0](5)和arr[1](3),因为5>3,触发交换,数组变为{3, 5, 1}。
    • 接着内层循环执行j=2:此时arr[i]是索引0的3,arr[j]是索引2的1,代码判断3>1,这就是1与3的比较环节。满足条件后触发交换,数组变为{1, 5, 3}。
  3. 后续第二轮外层循环(i=1):
    • 固定索引1的位置,比较arr[1](5)和arr[2](3),交换后数组最终变为{1, 3, 5}。

简单来说,1与3的比较是在第一轮外层循环中,当3被交换到索引0的位置后,和原本在索引2的1进行大小对比,最终通过交换把更小的1放到了数组的起始位置。

内容的提问来源于stack exchange,提问作者Rafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:30:26