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的比较发生在第一轮外层循环的内层循环阶段,具体步骤如下:
- 初始数组状态:
{5, 3, 1} - 第一轮外层循环(
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}。
- 后续第二轮外层循环(
i=1):- 固定索引1的位置,比较
arr[1](5)和arr[2](3),交换后数组最终变为{1, 3, 5}。
- 固定索引1的位置,比较
简单来说,1与3的比较是在第一轮外层循环中,当3被交换到索引0的位置后,和原本在索引2的1进行大小对比,最终通过交换把更小的1放到了数组的起始位置。
内容的提问来源于stack exchange,提问作者Rafi
相关产品推荐
相关产品推荐

