Witam. Piszę własnie Quick sorta, przy zastosowaniu algorytmu Horea do wyznaczenia pivota. Niestety program po uruchomieniu zostaje przerwany, z niewiadomego mi powodu. Bardzo proszę Was o pomoc. Sam nie potrafię już znaleźć błędu.
#include <iostream>
#include <algorithm>
#include <vector>
void Quicksort(std::vector<int> & iTabWithDatas, int iFirst, int iLast);
int PartitionHorae(std::vector<int> & iTabWithDatas, int iFirst, int iLast);
int main()
{
std::vector<int>ae{ 5,3,2,6,7,13,7,4};
Quicksort(ae, 0, ae.size()-1 );
for (int i = 0; i < ae.size() ; ++i)
{
std::cout << ae[i] << "," ;
}
return 0;
}
int PartitionHorae(std::vector<int> & iTabWithDatas, int iFirst, int iLast)
{
int i = iFirst;
int iPivot = iTabWithDatas[iFirst];
int j = iLast;
while (i <= j)
{
while (iTabWithDatas[j] < iPivot)
{
--j;
}
while (iTabWithDatas[i] > iPivot)
{
++i;
}
if (i <= j)
{
std::swap(iTabWithDatas[i], iTabWithDatas[j]);
++i;
--j;
}
}
return j;
}
void Quicksort(std::vector<int> & iTabWithDatas, int iFirst, int iLast)
{
if (iFirst < iLast)
{
int q = PartitionHorae(iTabWithDatas, iFirst, iLast);
Quicksort(iTabWithDatas, iFirst, q);
Quicksort(iTabWithDatas, q + 1, iLast);
}
}
Z góry dziekuje za pomoc.
Pozdrawiam