字符串数组比较和排序

本文关键字:排序 比较 数组 字符串 | 更新日期: 2023-09-27 18:27:59

首先,我想说我的编程知识非常基础,并且有一种随学随用的风格。所以,如果我听起来很愚蠢,请耐心听我说。

所以我有一个多维字符串数组,其中一部分是:

X       Y
4,1 Adelaide
4,2 Interlagos
4,3 Sakhir
4,4 Hungaroring
4,5 Estoril
4,6 Barcelona
4,7 Silverstone
4,8 Mugello
4,9 Hockenheim
4,10 Monte Carlo

在上表中,X和Y是数组的2个维度。

现在我有了另一个字符串数组,其中的元素来自上面数组的X维,并且是未排序的。例如,

4,6
5,15
3,7
10,12

等等。。。

现在我要做的是编写一个代码,它查看数组#2,并从数组#1的维度Y分配一个相应的元素。

例如,当代码在数组#2中遇到4,6时,我希望代码分配相应的值,即Barcelona。

我正在寻找的只是基本的片段或算法。剩下的我自己做。

提前感谢!

字符串数组比较和排序

听起来表1应该是一个Dictionary<string, string>,将"4,6"映射到"Barcelona"。然后你可以做:

// However you want to populate your data
Dictionary<string, string> mapping = ...;
List<string> values = keys.Select(key => mapping[key]).ToList();

请注意,如果任何键没有映射,这将引发异常——如果这不是您想要的,请澄清需求。

目前还不清楚您是如何获得这些数据的,也不清楚您的"多维字符串数组"是string[,]还是string[][]。如果将其作为字符串数组接收,请提供更多详细信息,我们可以解释如何将其转换为字典。

您应该使用Dictionary。字典在内部是一个数组。如果您交出一个密钥,值对(插入它)一个所谓的散列函数将应用于该密钥。此函数返回一个整数i。该值存储在数组[i]中。如果你想从字典中得到一个值,只需交出密钥。在内部应用散列函数,计算i并返回array[i]。这听起来像是非常大的开销,但对于大型数组(如果按键排序,则为O(logn),如果根本不排序,则搜索键为O(n)-如果您知道O notation),则搜索密钥的速度很慢,在大多数应用程序中,散列函数可能非常快。因此,即使使用大型字典访问一个值也是很快的。(字典中还有一些技巧,可以处理两个键导致相同整数i的情况,但如果你不想自己实现字典,你不必太在意这一点)

词典在其他语言中也被称为地图或哈希图。

不确定我在这里是否正确解释了你的问题。。。

你的数组#2,你是说你想用"Barcelona"替换它的元素(比如"4,6")吗
如果是这种情况,则:
循环遍历数组#2,对于每个元素,使用String.split()从中获得两个数字部分(例如"4"answers"6")。然后使用Integer.parseInt()将它们从String转换为int(称为a、b),并将这些int用作数组#1的索引,如array1[a][b],以获得Y值。

我想你真的想使用数组,因为这些数字很小并且有界,否则就按照其他答案的建议使用字典。。。

如果您必须以2D数组的形式接收第一组数据,下面是如何将其转换为字典的方法:

Dictionary<string, string> dic = new Dictionary<string,string>();
for (int i = 0; i < firstArray.GetLength(0); i++)
{
    dic.Add(firstArray[i, 0], firstArray[i, 1]);
}