【发布时间】:2019-10-13 17:20:58
【问题描述】:
我是 C 新手,我正在尝试编写一个函数,该函数将在数组中进行排列,给定一个具有每个元素的新位置的数组。
我想要的一个例子:
int newPositions[] = {3,1,5,2,4};
int arr[] = {20,30,-1,9,1};
>> {-1,20,1,30,9}
我来自 Java,所以我有我们想尝试的基本函数,但是当我看到我无法在 C 中返回数组时,我很惊讶,我正在尝试找到在不使用太多内存的情况下做到这一点的最佳方法。我想过复制数组,但是还有其他解决方案吗?
谢谢
【问题讨论】:
-
将结果数组作为指向其第一个元素的指针传递。
-
在 SO 上要求“最佳方式”通常是不好的形式 - 它是主观的,因此是意见或目标限制的问题。只需询问“如何”,您将获得许多解决方案,希望得到有用的解释,以便您评估优势,其他人会投票和评论,您的“最佳”解决方案将变得显而易见。
-
请注意,C 数组的索引是从零开始的,所以
{2,0,4,1,3}会使得实现稍微简单一些。 -
您正在询问实现该功能的最糟糕的方式,但在正文中解释您的 problem 正在返回一个数组 - 这是一个不同且更普遍的问题。您最好询问如何更通用地解决该问题;否则你可能会得到很多聪明的算法,但仍然不知道如何解决数组不是 C 中的一流数据类型的问题。
标签: c arrays permutation