Zadanie z procedurami sortowania

0

Dzień dobry, mam problem z zadaniem za które nie mam pojęcia jak się zabrać chociaż nasuwa mi się odpowiedź iż wszystkie są.
Zadanie brzmi następująco:
Zakładamy że posiadamy 3 procedury sortowania: przez kopcowanie, przez proste wstawianie i przez proste wybieranie.

 sortKopcowe(int *t, int n)
 prosteWstawianie(int *t, int n)
 prosteWybieranie(int *t, int n)

Na podstawie tych procedur zostały stworzone 4 nowe:

 	void SzybkoWstaw(int *t, int n){
	sortKopcowe(t,n);
	prosteWstawianie(t,n;)
}

void SzybkoWstaw2(int *t, int n){
	prosteWstawianie(t,n;)
	sortKopcowe(t,n);
}

void SzybkoWybierz(int *t, int n){
	sortKopcowe(t,n);
	prosteWybieranie(t,n;)
}

void SzybkoWybierz2(int *t, int n){
	prosteWybieranie(t,n;)
	sortKopcowe(t,n);
}

Czy i jeśli tak to które z nowo utworzonych są również procedurami sortowania? Odpowiedz uzasadnij

2

Skoro każda z tych funkcji sortuje, to dowolna kombinacja tych funkcji też sortuje. Sortowanie posortowanego zbioru nie psuje niczego.

0

Dzieki za odpowiedź. Dodatkowo musze wyznaczyć złożoność wszystkich 4 funkcji. Czyli z tego wynika, iż złozoność funkcji SzybkoWstaw oraz SzybkoWstaw2 będzie taka sama ? I tak samo w przypadku SzybkoWybierz i SzybkoWybierz2?

1

Nie. Są algorytmy sortujące, których złożoność w przypadku optymistycznym jest taka sama, jak w przypadku pesymistycznym (np. sortowanie przez kopcowanie), ale są takie, gdzie są różne (np. quicksort, który dla posortowanych danych ma złożoność kwadratową). W takim przypadku posortowanie heapsortem a potem quicksortem też będzie kwadratowe, ale posortowanie najpierw quicksortem a potem heapsortem będzie średnio pseudoliniowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1