【发布时间】:2013-06-19 08:19:07
【问题描述】:
我在 C 语言中有以下家庭作业。我基本上需要一种方法而不是解决方案。
我们有一个 13 x 13 的数组。在数组中,我们有一个需要考虑的菱形。此菱形之外的所有内容都初始化为 -1(不重要)。下面的示例 5 x 5 数组-
x x 1 x x
x 2 2 2 x
3 3 3 3 3
x 4 4 4 x
x x 5 x x
x=-1
现在在这个数组中,菱形中每个条目的值包含 11 位。 5 lsb 包含一个数据(色调),其他 6 个包含另一个数据(直径)。我们需要按行对数据进行排序,单调地对色调进行排序,然后按列对直径进行单调排序。
这样做最有效且最节省内存的方法是什么?由于我们需要保存这一点,因此最好交换条目而不是创建另一个数组。最后,我们将得到一个排序好的菱形数组(仍然是 -1)。非常感谢你们!
【问题讨论】:
-
另一项家庭作业...先生,您尝试了什么?
-
随机化所有值,然后检查它们是否符合您的要求。如果他们不这样做,请重复该过程,直到他们这样做。 en.wikipedia.org/wiki/Bogosort
-
@xaxxon "如何有效地检查值是否已排序?"
-
你能举个例子输入解决方案吗?特别是,如果您关心钻石的任何两个元素,色调会“取代”直径吗?例如,假设我们将一个元素表示为
(hue, diameter)(为简单起见,假设它们只是数字)那么我们有(1, 1000) < (2, 0)吗?说你从上到下,在给定的行内,从左到右枚举钻石的元素是否合适?如果是这种情况,那么我只需编写一个比较器函数并将钻石排序为数组;或者您可以选择按色调排序,然后按直径对每一行进行排序。
标签: c arrays algorithm sorting memory