【发布时间】:2016-12-28 17:49:06
【问题描述】:
给定一个二维数组,每行从左到右,从小到大排序,我想将整个数组从小到大排序为一维数组。
行数为N,列数为M。 我需要的复杂度是 MNlog(N)
我想做的是对 2d 数组进行某种合并排序,每次为函数发送 2 行,然后我就卡住了。
我为函数给出的签名是
void sort_rect(int a[N][M], int b[])
我保证 b 的一维数组有足够的空间容纳二维数组的所有元素。#C!!!
【问题讨论】:
-
合并排序听起来确实像您需要的,将行合并到目标数组中。你能详细说明你的问题吗?你卡在哪一部分?合并排序一般?还有什么?
-
我写了合并函数,复制函数,我被困在一个主要的事情上,首先是我如何每次发送 2 行然后将两行的 1d 数组存储在哪里?其次,我需要复杂性运行为 MN(log(N)) 而不是 MNlog(NM)
-
输入(N = 3 ;M = 4):1 5 8 10 3 4 5 6 2 3 3 9 输出:1 2 3 3 3 4 5 5 6 8 9 10
-
二维数组中的每一行(数组)是否已排序?
标签: c++ c arrays algorithm sorting