Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Mergesort c++ problem

$
0
0
Hi, I'm doing an assignment where I am supposed to implement a merge sort algorithm (shown below). Even though everything compiles, the elements are not actually sorted. I have been looking around for about an hour now and can't seem to figure out what is wrong with my code. Any input is greatly appreciated!


 void mergesort(vector<int> &data) {
  // implement me
	vector<int> left;
	vector<int> right;
	
	if (data.size() <= 1) {
		return;
	}
	else {
		int mid = (data.size()/2);
		
		
		for (int i = 0; i < mid; ++i) 
			left.push_back(data[i]);
		for (unsigned int i = mid; i < data.size(); i++) 
			right.push_back(data[i]);
	
		mergesort(left);
		mergesort(right);
		merge(left, right);

}
}

vector<int> merge(vector<int> &left, vector<int> &right) {
	vector<int> result;
	unsigned left_it = 0, right_it = 0;
	
	while (left_it <left.size() && right_it < right.size()) {
		if (left[left_it] < right[right_it]) { 
			result.push_back(left[left_it]);
			left_it++;
		}
		else {
			result.push_back(right[right_it]);
			right_it++;
		}
	}
	
	while(left_it < left.size()) {
		result.push_back(left[left_it]);
		left_it++;
	}
	
	while(right_it < right.size()) {
		result.push_back(right[right_it]);
		right_it++;
	}
	
	return result;
		
  // implement me

} 

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>