Cześć, jak rozumiecie to zadanie, głównie chodzi o pogrubioną część :
Napisz funkcję, która w argumencie będzie miała tablicę z liczbami całkowitymi oraz inne
niezbędne argumenty. Funkcja ma wykonać sortowanie liczb metodą bąbelkową (nie używaj
gotowych funkcji bibliotecznych, np. sort(...)). Funkcja powinna zwracać sumę wszystkich operacji
dominujących w sortowaniu.
Wprawdzie nie rozumiem, co to na Swaroga jest suma operacji dominujących, ale jakiś czas temu przy okazji pomocy innemu użytkownikowi stworzyłem implementację sortowania bąbelkowego.
Podejrzewam, że chodzi o liczbę wszystkich operacji, które jako argumenty przyjmują wartości z tablicy na wejściu. Czyli może chodzić o porównanie dwóch elementów i ich zamianę. Wtedy będziesz mógł oszacować złożoność obliczeniową swojego algorytmu, co w Twoim przypadku powinno dać O(n^2), czyli liczba takich operacji powinna być w zależności kwadratowej do liczby elementów w tablicy (w sensie asymptotycznym).
Bracie @Bartek24, najlepiej dopytaj profesora co miał na myśli, bo inaczej jedyne co mamy to przypuszczenia.
rrowniak napisał(a):
Podejrzewam, że chodzi o liczbę wszystkich operacji, które jako argumenty przyjmują wartości z tablicy na wejściu. Czyli może chodzić o porównanie dwóch elementów i ich zamianę. Wtedy będziesz mógł oszacować złożoność obliczeniową swojego algorytmu, co w Twoim przypadku powinno dać O(n^2), czyli liczba takich operacji powinna być w zależności kwadratowej do liczby elementów w tablicy (w sensie asymptotycznym).
Racja,to chyba by tylko miało sens haha, a moglbys ewentualnie wskazac blad w tym kodzie? sortuje poprawnie ale licznik nie działa
#include <iostream>
using namespace std;
int bubble_sort(int tab[], int n){
int licznik=0;
for(int i=1; i<n; i++){
for(int j=n-1; j>=1; j--){
if(tab[j]<tab[j-1]){
int buffor;
licznik++;
buffor=tab[j-1];
tab[j-1]=tab[j];
tab[j]=buffor;
}
}
}
return licznik;
}
void wczytaj(int tablica[], int n){
for(int i=0; i<n; i++){
cout<<"Podaj liczbe: ";
cin>>tablica[i];
}
}
void wyswietl(int tablica[], int n){
for(int i=0; i<n; i++){
cout<<tablica[i]<< ", ";
}
}
int main()
{
const int MAX = 1000;
int tablica[MAX], n;
cout<<"ile liczb chcesz wprowadzic: ";
cin>>n;
wczytaj(tablica, n);
bubble_sort(tablica, n);
wyswietl(tablica,n);
cout<<endl;
cout<<"ilosc obliczen: "<<bubble_sort(tablica,n);
return 0;
}
#include <iostream>
using namespace std;
int bubble_sort(int tab[], int n){
int licznik=0;
for(int i=1; i<n; i++){
for(int j=n-1; j>=1; j--){
if(tab[j]<tab[j-1]){
int buffor;
buffor=tab[j-1];
tab[j-1]=tab[j];
tab[j]=buffor;
licznik++;
}
}
}
return licznik;
}
void wczytaj(int tablica[], int n){
for(int i=0; i<n; i++){
cout<<"Podaj liczbe: ";
cin>>tablica[i];
}
}
void wyswietl(int tablica[], int n){
for(int i=0; i<n; i++){
cout<<tablica[i]<< ", ";
}
}
int main()
{
const int MAX = 1000;
int tablica[MAX], n,zlozonosc;
cout<<"ile liczb chcesz wprowadzic: ";
cin>>n;
wczytaj(tablica, n);
zlozonosc = bubble_sort(tablica, n);
cout<<zlozonosc<<endl;;
//wyswietl(tablica,n);
return 0;
}
no okej ale nawet biorąc pod uwage wskaane przez was błędy funkcja zwraca złą złożoność, przykladowo dla tablicy 5 elementowej zwraca5 a dla cztery 3 itpp
Zdajesz sobie sprawę że ta funkcja zwraca liczbę przestawień? Jak byś wrzucił posortowaną tablicę to by było 0