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

请帮我排查JavaScript版QuickSort算法错误——输出异常且元素缺失

问题分析与修复

你的快速排序代码存在两个核心问题,直接导致输出出现单独的price数值且丢失完整对象:

  1. 基准值类型错误:你将array[0].price(纯数值)赋值给了pivot,但实际应该保留完整的数组元素(对象),否则concat时会把数值直接插入结果数组,而非原对象。
  2. 基准元素未正确纳入结果:循环从i=1开始,原基准元素array[0]没有被加入left或right数组,而你concat的是pivot数值,导致原对象丢失,取而代之的是它的price值。

修复后的代码

function quicksort(array) {
  if (array.length <= 1) {
    return array;
  }

  // 取完整对象作为基准,而非仅price属性
  var pivot = array[0];
  
  var left = []; 
  var right = [];

  for (var i = 1; i < array.length; i++) {
    // 比较当前元素与基准对象的price属性
    array[i].price < pivot.price ? left.push(array[i]) : right.push(array[i]);
  }

  // 将基准对象(而非数值)合并到排序后的数组中
  return quicksort(left).concat(pivot, quicksort(right));
};

var unsorted = [{
  title: "JavaScript",
  price: 25
},
{
  title: "PHP",
  price: 15
},
{
  title: "Java",
  price: 30
},
{
  title: "Elixir",
  price: 50
},
{
  title: "Go",
  price: 45
},
{
  title: "Python",
  price: 20
},
{
  title: "CSS",
  price: 10
},
];
var sorted = quicksort(unsorted);

console.log('Sorted array', sorted);

修复后输出

Sorted array [
  { title: 'CSS', price: 10 },
  { title: 'PHP', price: 15 },
  { title: 'Python', price: 20 },
  { title: 'JavaScript', price: 25 },
  { title: 'Java', price: 30 },
  { title: 'Go', price: 45 },
  { title: 'Elixir', price: 50 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:30:55