We consider the problem of partitioning an array of n items into p intervals so that the maximum weight of the intervals is minimized. The currently best known bound for this problem is 0(n+p1+ε) [HNC92] for any fixed ε< 1. In this paper, we present an algorithm that runs in time O(n log n); this is the fastest known algorithm for arbitrary p. We consider the natural generalization of this partitioning to two dimensions, where an nxn array of items is to be partitioned into p2blocks by partitioning the rows and columns into p intervals each and considering the blocks induced by this partition. The problem is to find that partition which minimizes the maximum weight among the resulting blocks. This problem is known to be NP-hard [GM96]. Independently, Charikar et, al. have given a simple proof that shows that the problem is in fact NP-hard to approximate within a factor of two. Here we provide a polynomial time algorithm that determines a solution at most O(1) times the optimum; the previously best approximation ratio was O(√p) [HM96], Both the results above are proved for the case when the weight of an interval or block is the sum of the elements in it. These problems arise in load balancing for parallel machines and data partitioning in parallel languages. Applications in motion estimation by block matching in video and image compression give rise to the dual problem, that of minimizing the number of dividers p so that the maximum weight of a block is at most S. We give an O(log n) approximation algorithm for this problem. All our results for two dimensional array partitioning extend to any higher fixed dimension.