Ich versuche, Merge-Sortierung mit Iteratoren zu schreiben, um mich selbst C++ beizubringen, aber aus irgendeinem Grund kompiliert dieser Code, aber das Ergebnis ist nicht sortiert. Kann jemand herausfinden, was damit nicht stimmt? es scheint meinen ungeübten Augen völlig in Ordnung zu sein.Was ist falsch an dieser Zusammenführungs-Sort-Code?
typedef vector<int> vec_int;
typedef vector<int>::iterator vec_int_iter;
void merge_sort(vec_int& vec, vec_int_iter low, vec_int_iter high){
if(low < high){
vec_int_iter med = low + (high-low)/2 ;
merge_sort(vec, low, med);
merge_sort(vec, med+1, high);
arrange(vec, low, med, high);
}
}
void arrange(vec_int& vec, vec_int_iter low, vec_int_iter med, vec_int_iter high){
vec_int_iter left = low, right = med+1;
vec_int temp;
temp.clear();
vec_int_iter it = temp.begin();
while(left <= med and right <= high)
temp.push_back((*left < *right)? *left++ : *right++);
while(left <= med)
temp.push_back(*left++);
while(right <= high)
temp.push_back(*right++);
vec = temp;
}
Dank! das macht viel mehr Sinn! –