Java中循环与排序需协同使用:循环用于遍历、比较、交换或累积,排序依赖循环构建逻辑;for循环常用于排序前后的基础统计(如求和、均值、极值),索引式for遍历数组。

Java 中循环处理与数据排序不是孤立技能,而是日常编码中紧密配合的组合动作:循环负责遍历、比较、交换或累积,排序依赖循环构建逻辑结构。掌握二者协同方式,才能写出清晰、可维护、符合实际需求的代码。
用 for 循环遍历并完成基础统计
多数排序前需了解数据特征——比如求和、均值、极值。这些操作天然适配单层 for 循环,且必须在排序前或排序后执行(取决于业务逻辑)。
- 遍历数组时用 索引式 for(
for (int i = 0; i ),便于同时访问元素和位置 - 求最大/最小值时,初始化
max = arr[0]、min = arr[0],再逐个比较更新 - 平均值计算注意除数是
arr.length,不是硬编码数字(如示例中误写为/7而数组长为 8)
用嵌套 for 实现经典比较排序
冒泡、选择、插入这三种手写排序都依赖双重循环:外层控制轮次或目标位置,内层负责查找、比较或调整。它们不依赖额外空间,适合教学和小规模数据。
-
冒泡排序:外层
i控制已“沉底”元素个数,内层j范围为0 到 length-1-i,只比相邻项,大数逐步右移 -
选择排序:外层
i是待填位置,内层j从i+1开始找最小值,找到即交换,每轮仅换一次 -
插入排序:外层
i从第 2 个元素开始(i=1),内层j从i-1往前比,把arr[i]插入到已排好序的左侧子数组中合适位置
用 while 循环实现可控升序输出
while 不常用于数组排序本身,但在按需生成序列、条件驱动排序(如读取输入直到满足条件再排序)、或模拟排序过程时更灵活。
立即学习“Java免费学习笔记(深入)”;
- 升序打印 1 到 N:定义独立计数器(如
int i = 1),循环条件为i ,体内先输出再 <code>i++ - 避免常见错误:不要把用户输入直接当计数器并递减(否则得降序),也不要遗漏递增语句导致死循环
- 结合 Scanner 使用时,确保
scanner.close()放在循环外,防止资源提前关闭
优先使用 Arrays.sort() 简化生产代码
手写排序重在理解逻辑;工程实践中应直接调用 JDK 提供的 Arrays.sort(),它底层采用双轴快排(int[])或 TimSort(对象数组),高效稳定。
- 对基本类型数组(
int[],double[])直接调用Arrays.sort(arr),升序排列 - 降序需配合包装类型 +
Comparator,例如Integer[] arr:Arrays.sort(arr, Collections.reverseOrder()) - 排序会直接修改原数组,如需保留原始顺序,先
clone()再排序


















