I need help making a program in c++ for merge sort and quick sort reading from a
ID: 3799333 • Letter: I
Question
I need help making a program in c++ for merge sort and quick sort reading from a text file name in.text help
below is my program but gives wrong order :'(
void merge(std::vector<int>* array, int i, int mid, int j)
{
std::vector<int> vTemp(array->size()+100);
int l = i;
int r = j;
int m = mid + 1;
int k = l;
while (l <= mid && m <= r)
{
if (array->at(i) <= array->at(m))
vTemp.at(k++) = array->at(l++);
else
vTemp.at(k++) = array->at(m++);
}
while (l <= mid)
vTemp.at(k++) = array->at(l++);
while (m <= r)
vTemp.at(k++) = array->at(m++);
for (int i1 = i; i1 <= j; i1++)
array->at(i1) = vTemp.at(i1);
}
void merges(std::vector<int>* array, int i, int j)
{
int mid = 0;
if (i < j)
{
mid = (i+j) / 2;
merges(array, i, mid);
merges(array, mid + 1, j);
merge(array, i, mid, j);
}
}
void mergesort(std::vector<int>* array, bool bIncreasing)
{
merges(array, 0, array->size()-1);
}
Explanation / Answer
//You had Done mistake on Passing Value of Low,Mid and High in void merge() function.Now Code is Running Fine .Checkout http://www.sanfoundry.com/cpp-program-implement-merge-sort/ for more Detail.
void merge(std::vector<int>* array, int low, int high, int mid)
{
std::vector<int> vTemp(array->size()+100);
int l = low;
int r = high;
int m = mid + 1;
int k = low;
while (l <= mid && m <= r)
{
if (array->at(l) < array->at(m))
vTemp.at(k++) = array->at(l++);
else
vTemp.at(k++) = array->at(m++);
}
while (l <= mid)
vTemp.at(k++) = array->at(l++);
while (m <= r)
vTemp.at(k++) = array->at(m++);
for (int i1 = low; i1 < k; i1++)
array->at(i1) = vTemp.at(i1);
}
vector<int>* merges(std::vector<int>* array, int i, int j)
{
int mid;
if (i < j)
{
mid = (i+j) / 2;
merges(array, i, mid);
merges(array, mid + 1, j);
merge(array, i, j,mid);
}
return array;
}
vector<int>* mergesort(std::vector<int>* array)
{
return merges(array, 0, array->size()-1);
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.