【问题标题】:Sort array contains numeric string using c# array使用 c# 数组排序数组包含数字字符串
【发布时间】:2018-04-10 07:17:50
【问题描述】:

请参考以下数组,

string[] numArray = {"two","three","one", "seven","nine", "two", "one"};

我们需要按数字排序这个数组,然后返回排序后的数组

string[] output = {"one","one","two","two","three","seven","nine"};

请建议仅使用字符串数组或任何方法的 c# 代码中的最佳逻辑。

【问题讨论】:

  • 这对我来说似乎是作业。
  • 将数字名称转换为数值,并按数值排序。
  • 尝试了什么,你的代码在哪里?
  • @SENTHILVEL SO 不是“代码编写服务”。
  • 我们不会为您编写代码,因为 StackOverflow 不是代码编写服务。

标签: c# arrays sorting


【解决方案1】:

您需要下订单(实际上是equivalence relation)才能进行排序。字符的顺序通常是 a,b,c,... 并且通常在诸如“one”之类的单词上给出的顺序称为lexicographic order。但是,您想按其背后的含义进行排序,它的语义:整数。

你的计算机不知道你想要这个,所以你需要提供含义。这是通过一个函数(技术上是字典)。

计算机具有内置整数的顺序(在通常的数学中,它也内置在标准整数中)。因此,您需要提供一个一对一的函数(例如,使用字典或 uples 列表,例如 List),以便您从整数对等体中对单词进行排序。您还可以用字母映射单词:one-a, two-b, ... 当您到达 z 时,您继续使用 aa(以 27 为底数)。您也可以使用位(以 2 为基数)、base64 等来执行此操作。但总有一个带有整数的映射。

恕我直言,理解比知道更重要。现在您可以编写许多解决方案。

【讨论】:

    【解决方案2】:

    您可以将数字存储在字典中,其中键是字符串(例如 "two"),值是整数(例如 2)。通过使用 LINQ,您可以首先将输入数组中的字符串替换为数字,然后使用 OrderBy 对它们进行排序。数字排序后,您可以将数字转换回字符串:

    Dictionary<string, int> numbers = new Dictionary<string, int>() {
        { "one", 1 },
        { "two", 2 },
        { "three", 3 },
        { "four", 4 },
        { "five", 5 },
        { "six", 6 },
        { "seven", 7 },
        { "eight", 8 },
        { "nine", 9 },
    };
    
    string[] wordArray = { "two", "three", "one", "seven", "nine", "two", "one" };
    
    var numberArray = Enumerable.Range(0, wordArray.Length)
                                .Select(i => numbers[wordArray[i]])
                                .OrderBy(x => x).ToArray();
    
    var output = Enumerable.Range(0, numberArray.Length)
                           .Select(i => numbers.FirstOrDefault(x => x.Value == numberArray[i]).Key)
                           .ToArray();
    

    Output = {"one","one","two","two","three","seven","nine"}

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2020-02-18
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      相关资源
      最近更新 更多