所以我有两个矩阵,总共2N个元素。所以,每个人都有1xN的长度。我想要做的是交换它们的元素,以便其中一个矩阵具有最小的元素,而另一个矩阵具有最大的元素。在C/Java /任何东西中加速/优化此代码
以下代码确实如此。有一个问题,当矩阵超过一定长度时,需要永远完成。
是否有可能让这段代码更快一点?我现在真的想不出什么。 max_index
和min_index
也通常是天真的实施。
高达N
= 1百万项目它相对好,大约需要1.0-1.5
分钟,但如果我需要像N=
10mill或更多,它永远不会在我的笔记本电脑上完成。
while (1) {
int mini = max_index(other);
int maxi = min_index(data);
if (other[mini] > data[maxi]) {
int temp = other[mini];
other[mini] = data[maxi];
data[maxi] = temp;
} else {
break;
}
}
例子来阐明:
other =
0.5308 0.5458 0.8090 0.8063 0.8874
data =
0.2901 0.5497 0.9168 0.0882 0.7856
手术后:
other =
0.5308 0.5458 0.2901 0.5497 0.0882
data =
0.8090 0.8063 0.9168 0.8874 0.7856
你是什么意思_so意味着其中一个矩阵具有最小的元素,而另一个矩阵具有最大的元素_?是否可以选择加入两个数组,对结果数组进行排序并将其分解为第一个和第二个一半? – Codor
@Codor我更新了我原来的帖子 –
min_index(data);这是否会返回最小值的索引? – hasan83