【问题标题】:sorting 2D array with second column following the sorting algorithm of the first in C#按照 C# 中第一列的排序算法对具有第二列的二维数组进行排序
【发布时间】:2014-05-11 06:31:54
【问题描述】:

我有一个 [2,5000] 个字符串数组,我想仅根据第一行对其进行排序,但我希望第二行遵循该排序算法。

我能否就我应该如何处理这种情况提出一个主要想法?

编辑: 我的数组看起来像

{15、13、16、19、25、29、11} {周三 12 日,周四 13 日,周五 14 日,周六 15 日,周日 16 日,周一 17}

我想要它

{29、25、19、16、15、13、11} {16 日星期日、15 日星期六、14 日星期五、12 日星期三、13 日星期四、17 日星期一}

【问题讨论】:

  • 你尝试过什么,第一行和排序算法是什么意思?你能给我们一个数组的例子吗?
  • 代码示例将有助于了解您想要什么。给我们一个起点。
  • theGlitch,发布可编译代码怎么样?

标签: c# sorting multidimensional-array


【解决方案1】:

不要创建二维数组;创建具有两个属性的某个类的单维数组,然后根据仅比较其中一个值的自定义比较器对 that 进行排序。

【讨论】:

  • 我已经知道这个方法但是我不能使用类。除了使用类之外,还有其他解决方法吗?
  • @theGlitch 并不是说​​没有自定义类型就无法解决问题,但它肯定是最好的解决方案。任何其他解决方案几乎肯定会变得更糟。这将是更多的工作,更容易出错,代码不会那么清晰,更难维护等等。如果你的老师不仅鼓励,而且要求您使用数组的一维来表示“类型”而不是 actual 类型(即类),那么我会非常快地逃离该类,因为这是一个非常有害的概念鼓励。
  • 我将在课程后期学习课程,但此作业明确表示不要创建任何课程。
【解决方案2】:

我想这是一个任务。您需要编写一个排序算法(有很多,包括一些very simple ones),并且在对第一行进行排序时,对第一行和第二行执行所有交换。

即排序算法可能看起来像

void Sort(string[] array) {
    // some logic to loop over the array, determine which elements to swap
        swap(array[x], array[y]);
}

基本上你想编写类似的代码

void Sort(string[] firstRow, string[] secondRow) {
    // some logic to loop over firstRow, determine which elements to swap
        swap(firstRow[x], firstRow[y]);
        swap(secondRow[x], secondRow[y]);
}

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 2014-06-07
    • 2011-10-25
    相关资源
    最近更新 更多