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

如何在JavaScript中编辑参数数组的索引?及快速排序代码疑问

快速排序代码修复与数组索引操作说明

首先看你的快速排序代码,有几个需要修正的地方,我帮你整理并补全:

代码里的问题与修复

  1. 数组长度获取错误:JavaScript里数组的长度属性是length,不是size,所以quicksort_setup里的var high = arr.size - 1;要改成var high = arr.length - 1;
  2. 递归调用不完整:quicksort_by_percent_filled函数里,分区后只递归了左半部分,缺少右半部分的递归调用quicksort_by_percent_filled(arr, pi + 1, high);
  3. 缺失分区函数:快速排序的核心是partition函数,用来将数组分成比基准小和大的两部分,你没提供这个函数,我帮你补上常用的实现。

修正后的完整代码

function test_quicksort(){ 
  var arr = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]; 
  arr = quicksort_setup(arr); 
  Logger.log(arr); 
}

function quicksort_setup(arr){ 
  var high = arr.length - 1; // 修正为length属性
  arr = quicksort_by_percent_filled(arr, 0, high); 
  return arr 
}

function quicksort_by_percent_filled(arr, low, high){ 
  if (low < high){ 
    var pi = partition(arr, low, high); 
    quicksort_by_percent_filled(arr, low, pi - 1); 
    quicksort_by_percent_filled(arr, pi + 1, high); // 补全右半部分递归
  }
  return arr; // 增加返回值确保数组传递正确
}

// 补上分区函数(快速排序核心步骤)
function partition(arr, low, high) {
  var pivot = arr[high]; // 选最后一个元素作为基准
  var i = low - 1; // 记录比基准小的元素的最后位置索引
  for (var j = low; j < high; j++) {
    if (arr[j] <= pivot) {
      i++;
      // 交换arr[i]和arr[j],把小元素移到左边
      var temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
    }
  }
  // 将基准元素放到正确的中间位置
  var temp = arr[i + 1];
  arr[i + 1] = arr[high];
  arr[high] = temp;
  return i + 1; // 返回基准元素的最终索引
}

关于JavaScript中编辑数组索引的方法

在JavaScript里,数组是基于索引的集合,索引从0开始,操作起来很直接:

  • 修改指定索引的元素:直接通过索引赋值即可,比如想修改第3个元素(索引为2):
    var arr = [1,2,3];
    arr[2] = 4; // 现在arr变成[1,2,4]
    
  • 删除指定索引的元素:
    • 如果用delete:delete arr[1],这时候数组变成[1, undefined, 4],数组长度不变,只是该位置的值变为undefined,会留下空洞。
    • 如果想彻底删除并让后面元素前移,用splice:arr.splice(1, 1),这时候数组变成[1,4],长度会自动减少。
  • 在指定索引插入元素:用splice方法,比如在索引1的位置插入5:
    arr.splice(1, 0, 5); // 现在arr变成[1,5,4]
    
  • 访问指定索引的元素:直接arr[index],如果索引超出数组长度(比如数组长度是3,访问索引5),会返回undefined。

内容的提问来源于stack exchange,提问作者Leonardo the Vinchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:31:38