Объединить два массива, расположив элементы через один
От: licedey  
Дата: 31.10.16 09:36
Оценка:
Попалась такая задача, которую я решил "дедовским" методом, но не покидает ощущение, что LINQ и List могут сделать это в одну строку.
Подскажите лучшее решение?

static T[] Union<T>(T[] a1, T[] a2)
{
    T[] result = new T[a1.Count() + a2.Count()];
    int i = 0, j = 0, k = 0;
    bool use1 = true;
    for (; j < a1.Count() && k < a2.Count(); i++)
    {
        result[i] = use1 ? a2[j] : a2[k];
        if (use1) j++;
        else k++;
        use1 = !use1;
    }

    if (a1.Count() > a2.Count())
        for (; j < a1.Count(); j++, i++)
            result[i] = a1[j];

    else if(a2.Count() > a1.Count())
        for (; k < a1.Count(); k++, i++)
            result[i] = a1[k];

    return result;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.