所以我有兩個矩陣,總共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