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

如何根据double类型面积数组对关联字符串数组进行排序?

问题分析与解决方案

你的操作确实有误,核心问题在于先单独排序shapeArea的行为破坏了数组间的关联关系:
当你执行Array.Sort(shapeArea)时,面积数组的元素顺序被打乱,但shapeTypes和shapeColor的顺序未同步变更,此时面积和对应形状、颜色的绑定关系已经断裂,后续再执行Array.Sort(shapeArea, shapeTypes)自然无法得到正确的关联排序结果。

正确的Array.Sort用法

你需要使用Array.Sort的重载方法,直接以shapeArea为排序依据,同步排序另外两个关联数组,不需要单独提前排序面积数组:

string[] shapeTypes = {"circle", "triangle", "square" };
string[] shapeColor = { "red", "blue", "orange" };
double[] shapeArea = { 20, 5, 4 };

// 按面积升序,同步排序形状类型数组
Array.Sort(shapeArea, shapeTypes);
// 再按同样的面积顺序,同步排序颜色数组
Array.Sort(shapeArea, shapeColor);

执行后三个数组会保持对应关系,得到你期望的排序结果:

  • shapeTypes = {"square", "triangle", "circle"}
  • shapeColor = {"orange", "blue", "red"}
  • shapeArea = {4, 5, 20}

更稳健的面向对象方案

使用独立数组维护关联数据很容易出错,推荐将形状的属性封装成类,再对对象集合排序,逻辑更清晰且易维护:

// 定义形状类
public class Shape
{
    public string Type { get; set; }
    public string Color { get; set; }
    public double Area { get; set; }
}

// 初始化形状集合
List<Shape> shapes = new List<Shape>
{
    new Shape { Type = "circle", Color = "red", Area = 20 },
    new Shape { Type = "triangle", Color = "blue", Area = 5 },
    new Shape { Type = "square", Color = "orange", Area = 4 }
};

// 按面积升序排序
var sortedShapes = shapes.OrderBy(s => s.Area).ToList();

// 若需要单独的数组,可从排序后的集合中提取
string[] sortedTypes = sortedShapes.Select(s => s.Type).ToArray();
string[] sortedColors = sortedShapes.Select(s => s.Color).ToArray();
double[] sortedAreas = sortedShapes.Select(s => s.Area).ToArray();

这种方式不仅避免了数组关联错误,后续扩展属性(如周长、边长)也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:23:27