我正在尋找最快的方式來訂購220000 * 7 * 6的多維向量。最快的方法來訂購一個巨大的矢量?
我按[x] [5] [y]排序,我必須使中間的所有值(7)矢量跟進。
for(int i =0;i<211876;i++){
for(int k =0;k<211876;k++){
if(vec[k][5][myposition] < vec[k+1][5][myposition]){
for(int n =0;n<7;n++){
swap2int(vec[k][n][myposition],vec[k+1][n][myposition]);}
}
}
}
void swap2int(int &one, int& two){
int temp=0;
temp = one;
one = two;
two = temp;
return;
}
這是有點非常慢,我正在尋找方法來提高這個速度。
請清理代碼。我沒有看到「我」在哪裏使用,並且在任何地方都沒有「myposition」的定義。它看起來像我只是簡單地對數組中的每個「行」進行排序,這應該可以通過標準排序來實現,也可以使用自定義迭代器類型。但沒有關於正在做什麼的細節,我們不能提供幫助。 –
看起來像你已經實施了氣泡排序,這是非常緩慢的。看看這[流行的排序算法列表](http://en.wikipedia.org/wiki/Sorting_algorithm#Summaries_of_popular_sorting_algorithms)。基本上他們中的任何一個都會比你得到的更快。 – Kevin
......除非你真的需要,自己編寫排序是重複的工作,你應該使用'',並使用std :: sort(http://www.cplusplus.com/reference/algorithm/sort/) –
IdeaHat