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

如何实现bubble sort(冒泡排序)按字符串长度从大到小排序

按字符串长度从大到小的冒泡排序实现

你现有的代码逻辑实际是选择排序,不是冒泡排序:选择排序的核心是每轮遍历未排序区间找到最值,直接交换到排序区间的末尾;冒泡排序则是相邻元素两两比较,每轮把最值逐步“冒泡”到区间边缘。

如果你需要标准冒泡排序的实现,按字符串长度从大到小排序,参考代码如下:

function bubbleSortByLengthDesc(array) {
  for (let i = 0; i < array.length - 1; i++) {
    let hasSwap = false;
    // 每轮排序后末尾的i个元素已经是有序的最短元素,不需要再比较
    for (let j = 0; j < array.length - 1 - i; j++) {
      // 前一个元素长度小于后一个就交换,保证更长的元素往前移
      if (array[j].length < array[j + 1].length) {
        // 解构赋值交换,不需要额外临时变量
        [array[j], array[j + 1]] = [array[j + 1], array[j]];
        hasSwap = true;
      }
    }
    // 本轮没有交换说明数组已经完全有序,直接退出
    if (!hasSwap) break;
  }
  return array;
}

关于你现有代码的问题:你目前的选择排序写法里的判断条件array[i].length < array[j].length本身是可以实现从大到小排序的,如果你运行得到从小到大的结果,说明你实际写代码时把比较运算符写成了>,改回<即可得到预期结果。
如果要调整为从小到大排序,把上述所有代码里的比较符号换成>即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:04