Я пытаюсь написать сортировку слияния, используя итераторы, чтобы научить себя C++, но по какой-то причине этот код компилируется, но результат не сортируется. Может ли кто-нибудь выяснить, что с ним не так? это кажется совершенно прекрасным для моих неподготовленных глаз.что не так с этим кодом сортировки слияния?
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;
}
Спасибо! это имеет гораздо больше смысла! –