Jelly, 24 19 15 13 11 bytes
pS€żị"¥pỤị⁵ Takes number of rows, number of columns and a flat list as separate command-line arguments.
How it works (outdated)
pµS€©-*×Ṫ€®żỤị⁵pS€żị"¥pỤị⁵ Main link. Argument: nm (rows), mn (columns), A (list, flat) p Compute P, the Cartesian product of [1, ..., n]m] and× [1, ..., m]n]. This yields µ the indices of Beginthe amatrix newM, monadic chaini.e., Argument:[[1, P 1], [1, S€2], ..., [m, n]]. S€ Compute the sums of all index pairs. © p Yield the Cartesian product. Save the resulting list in the¥ register Dyadic chain. Arguments: Sums, Cartesian product. ị" -* For each index pair Computein (-1)**sthe forCartesian eachproduct, sumretrieve s.the coordinate ×Ṫ€ at Multiplythe withindex theof secondits coordinatessum, ofi.e., allmap pairs[i, inj] P. to i if i + j is odd and to ®ż Zip the list in the register with thej listif ofi products+ j is even. ż Zip the sums with the retrieved indices. Ụ Sort [1, ..., nm]mn] by the corresponding item in thatthe resulting list. ị⁵ Retrieve the corresponding items from A.