【问题标题】:How to sort jagged array from an array? [duplicate]如何从数组中对锯齿状数组进行排序? [复制]
【发布时间】:2020-12-21 05:01:05
【问题描述】:
var jaggedarray = new int[3][];

jaggedarray[0] = new int[5] { 99, 999, 49, 79, 59 };
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[2] { 999, 500 };
  • 从这个锯齿状数组中,我希望它通过不同的array1D(可以是整数或字符串)对行进行排序,

  • 当然交错数组的行数等于array1D的元素个数,例如:

例子

object[] array1D= {12,7,3}

编辑: 锯齿数组中的元素个数和数据类型是随机的,我需要寻找的是从array1D排序后的新位置,并根据这些新位置对锯齿数组进行排序。

根据array1D排序的结果,排序后,我想要的锯齿数组结果是:

jaggedarray[0] =new int[2] { 999, 500 };  
jaggedarray[1] = new int[3] { 199, 1999, 149 };
jaggedarray[2] = new int[5] { 99, 999, 49, 79, 59 };

我一直在寻找关于锯齿数组的文章,但大多数都提到了它的列排序。

如何从其他数组中对锯齿状数组进行排序?

【问题讨论】:

  • "我希望它通过不同的数组1 对行进行排序" - 解释一下.. {12,7,3} 如何对您的数组进行排序?
  • 嗨@MichaelRandall,排序后,数组1D的结果是{3,7,12},我将根据array1D中的新元素位置对锯齿状数组行进行排序。
  • @NguyenManh 您可以使用方法Array.Sort() 来解决您的问题:Array.Sort(array1D, jaggedarray);。它将根据array1D 的值对jaggedArray 进行排序。

标签: c#


【解决方案1】:

如果我正确理解了这个问题,您可以 Zip 将您的 2 个数组集合在一起,然后在一维数组中的元素上使用 OrderBy Select (project)数组,然后使用ToArray 回到你的锯齿数组

object[] array1D = {12, 7, 3};

var results = jaggedarray
   .Zip(array1D, (ints, objects) => (ints, objects))
   .OrderBy(x => x.objects)
   .Select(x => x.ints)
   .ToArray();
    
foreach (var result in results)
   Console.WriteLine(string.Join(", ", result));

输出

999, 500
199, 1999, 149
99, 999, 49, 79, 59

更新,或者尴尬(对我来说),使用Array.Sort() :)

【讨论】:

  • 如果您删除除Array.Sort() 建议之外的所有内容,答案会不会更好?你不需要忠实于历史和注意更新;)meta.stackexchange.com/a/127655/316262
  • @Neuron 当然..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2020-12-31
  • 2023-01-10
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多