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

Quick sort problem

Object Storage Arubacloud
0 głosów
521 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 Ekspert (344,860 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 Ekspert (344,860 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 Ekspert (344,860 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 392 wizyt
pytanie zadane 13 marca 2018 w C i C++ przez Damian918 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 287 wizyt
pytanie zadane 24 stycznia 2018 w C i C++ przez Elijah Romashchenko Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 196 wizyt
pytanie zadane 27 listopada 2017 w C i C++ przez barti22062 Początkujący (370 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...