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

modSwapSort排序函数为何实现降序?原以为其逻辑为升序排列

代码排序逻辑差异解答

首先你说的原本正确的升序版本,是典型的选择排序实现:

  • 内层循环j从i+1开始遍历,只会对比i后面未排序的元素
  • 每一轮i的循环只会把未排序区间里更小的数换到i的位置,i前面的元素都是已经排好的升序序列,不会被改动,最终整体就是升序结果。

你现在改后的版本逻辑完全变了,最终输出降序的原因如下:

  • 内层循环j现在会遍历整个列表的所有下标,不再局限于i之后的位置
  • 交换条件if L[j] < L[i]的作用变成:只要任意位置的数比当前i位置的数小,就把更小的数换到j的位置,更大的数换到i的位置
  • 每一轮i的循环跑完,i位置最终会留下当前所有未被固定到前序位置的最大数,而且遍历过程会把之前放到前面的小数重新换到后面的位置
  • 多轮循环跑完后,越大的数会被逐步换到越靠前的位置,最终结果自然就是降序。

你可以拿短列表手动模拟一遍交换过程,就能很清楚看到每一步的变化逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:39:04