以下JavaScript升序排序代码对应的是哪一种排序技术?
排序算法判定结果
你给出的代码属于选择排序(Selection Sort)的朴素实现版本,核心逻辑和标准选择排序一致,仅交换逻辑做了简化处理。
你提供的代码可整理为如下可直接运行的版本:
let arr = [7, 9, 2, 11, 5] for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[j] < arr[i]) { let temp = arr[i] arr[i] = arr[j] arr[j] = temp } } } console.log(arr) // 输出 [2, 5, 7, 9, 11]
该实现和标准优化版选择排序的差异
- 标准优化版选择排序:每轮外层循环遍历未排序区间时,仅记录最小元素的下标,遍历完成后只执行1次交换操作,将最小元素放到有序区间的末尾位置
- 本朴素实现:每轮外层循环遍历未排序区间时,只要发现比当前i位置更小的元素就立刻执行交换,整体交换次数远多于优化版,但是核心逻辑仍然是每轮确定第i位的最终有序值,仍然归类为选择排序
算法特性
- 时间复杂度:最优、最坏、平均复杂度均为O(n²)
- 空间复杂度:O(1),属于原地排序算法
- 排序稳定性:不稳定,交换逻辑可能打乱相同值元素的相对顺序
内容的提问来源于stack exchange,提问作者Roh1
相关产品推荐
相关产品推荐

