将一个含有N个元素的数组均分为i个(i一定会被N整除),请问有什么高效的拆分方法?

解决方案 »

  1.   


    List<object[]> Split(object[] source, int i)
    {
      List<object[]> result = new List<object[]>();  int length = source.Length / i;  for (int n = 0; n < i; n++)
      {
        object[] sub = new object[length];    for (int k = 0; k < length; k++)
        {
          sub[k] = source[n * length + k];
        }    result.Add(sub);
      }  return result;
    }
      

  2.   


            public List<T[]> DivideArray<T>(T[] array, int i)
            {
                if (array.Length % i != 0)
                    return null;
                List<T[]> list = new List<T[]>();
                for (int j = 0; j < array.Length; j += array.Length / i)
                {
                    for (int k = 0; k < array.Length / i; k++)
                    {
                        T[] arr = new T[array.Length / i];
                        Array.Copy(array, j + k, arr, 0, array.Length / i);
                        list.Add(arr);
                        break;
                    }
                }
                return list;
            }