Здравствуйте, Andrudis, Вы писали:
A>Как в С# самым быстрым способом проверить, содержатся ли все элементы массива Х среди элементов массива Y? Может есть какой способ получше, чем поэлементная проверка?
Если массивы отсортированны, то есть.
Алгоритм приблизительно следующий (писался от руки):
object[] x; // Массив X, отсортированный по возрастанию
object[] y; // Массив Y, отсортированный по возрастанию
int xIndex = 0; // Указатель на элемент массива X
int yIndex = 0; // Указатель на элемент массива Y
int counter = 0; // Счетчик совпадений элементов
while (xIndex < x.Count && yIndex < y.Count) // Пока не кончится хотя бы один из массивов
{
object currentX = x[xIndex]; // Текущий эламент массива X
object currentY = y[yIndex]; // Текущий эламент массива Y
if (currentX == currentY) // Элементы совпадают
{
counter++; // Увеличиваем счетчик совпадений
xIndex++; // Переходим к следующему элементу массива X
}
else if (currentX > currentY) // Переходим к следующему элементу в том массиве, в котором текущий элемент меньше
{
yIndex++;
}
else
{
xIndex++;
}
}
if (counter == x.Length)
{
bingo(); // Массив X полностью содержится в массиве Y
}
Если массивы не отсортированные, может получиться более эффективно сначала их отсортировать. Не знаю считать издержки надо

... << RSDN@Home 1.1.4 beta 3 rev. 185>>