Zrozumienie sensu zadania

0

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.

0

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.

0

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).

0

Bracie @Bartek24, najlepiej dopytaj profesora co miał na myśli, bo inaczej jedyne co mamy to przypuszczenia.

0
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;
}

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

0

Zdajesz sobie sprawę że ta funkcja zwraca liczbę przestawień? Jak byś wrzucił posortowaną tablicę to by było 0

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