• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Quick sort problem

0 głosów
784 wizyt
pytanie zadane 3 czerwca 2017 w C i C++ przez Wujek Początkujący (410 p.)

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

komentarz 3 czerwca 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Jeżeli nie znajdziesz lub nikt Ci nie pomoże do jutra do postaram się pomóc, ale jeżeli chcesz samemu to ogarnąć to poponuję zainstalować Visual Studio i odpalić debuggera, następnie znaleźć moment, w którym wywala Ci program oraz zobaczyć czemu (co zwraca, jaki komunikat itd.).
komentarz 3 czerwca 2017 przez Wujek Początkujący (410 p.)
Jak kompilowalem z debuggerem to, otworzyła się tak jakby inna biblioteka "utylity " i tam była zaznaczona jedna linijka, która jednak nic mi nie mówi
komentarz 3 czerwca 2017 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Jakie IDE?
komentarz 3 czerwca 2017 przez Wujek Początkujący (410 p.)
Visual studio 2015

1 odpowiedź

+1 głos
odpowiedź 3 czerwca 2017 przez adrian17 Mentor (354,120 p.)
Z tego co widzę, masz stack overflow. Zajrzyj sobie w debuggerze, jak głęboko rekurencyjnie wykonuje Ci się quicksort.

(BTW styl z zaczynaniem nazw zmiennych typu iFirst jest paskudny, odradzam)
komentarz 3 czerwca 2017 przez Wujek Początkujący (410 p.)
Mógłbyś coś więcej podpowiedzieć co mam zrobić?  Bo nie bardzo rozumiem
komentarz 3 czerwca 2017 przez adrian17 Mentor (354,120 p.)
Masz błąd, przez który funkcja wywołuje się rekurencyjnie z tymi samymi parametrami bez końca. Zobacz w debuggerze, jak do tego dochodzi i napraw :) Mam nadzieję, że to wystarczająca podpowiedź.
komentarz 3 czerwca 2017 przez Wujek Początkujący (410 p.)
Niestety nie mogę znaleźć tego błędu. Wydaje się że wszystko w porządku a jadnak nie jest .
komentarz 3 czerwca 2017 przez adrian17 Mentor (354,120 p.)
W debuggerze ewidentnie widać, że nie jest w porządku:

https://puu.sh/w9Jek/c9a8310572.mp4

Podobne pytania

–3 głosów
2 odpowiedzi 451 wizyt
pytanie zadane 13 marca 2018 w C i C++ przez Damian918 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 474 wizyt
pytanie zadane 24 stycznia 2018 w C i C++ przez Elijah Romashchenko Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 226 wizyt
pytanie zadane 27 listopada 2017 w C i C++ przez barti22062 Początkujący (370 p.)

93,427 zapytań

142,421 odpowiedzi

322,648 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...