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

Ile porównań muszą wykonać dwa rodzaje sortowania?

Cloud VPS
–1 głos
584 wizyt
pytanie zadane 23 listopada 2017 w C i C++ przez antek782 Początkujący (490 p.)

Witam,

Ile porównań musi wykonać każdy z algorytmów sortowania(bąbelkowanie i przez wstawianie) dla 4 elementowego ciągu odwróconego (np. 10,5,3,1) i już posortowanego (np. 1, 3, 5, 10)?

2 odpowiedzi

0 głosów
odpowiedź 23 listopada 2017 przez Michał Kozłowski Obywatel (1,440 p.)

Proponuje w obu algorytmach inkrementację zmiennej (zwiększać o jeden) np.
Po sortowaniu - wyświetlamy wynik. 
 

int liczAlgorytmA = 0;
int liczAlgorytmB = 0;
//porównanie w algorytmie A
if (porównanie) 
{
      liczAlgorytmA ++;
} 

//porównanie w algorytmie B
if (porównanie) 
{
      liczAlgorytmB ++;
} 

//Wyświetl wartości 

cout << "Algorytm A = "<<liczAlgorytmA << "\nAlgorytm B = "<<liczAlgorytmB << endl;

 

0 głosów
odpowiedź 23 listopada 2017 przez event15 Szeryf (93,790 p.)
Antku, pokaż nam swój kod a pomożemy ;)
komentarz 23 listopada 2017 przez antek782 Początkujący (490 p.)
Proszę

 

#include <stdio.h>

const int ROZMIAR=5;
int nieposortowane[]={4, 3, 2, 1, 0};

// funkcja porownujace dwa elementy typu integer
int porownaj(int a, int b)
{
    return a>b;
}

// sortowanie babelkowe (ang. bubble sort)
void babelki(int* tablica, int N)
{
    int zamienione, i, tmp;

    do
    {
        zamienione=0; // jezeli nie bedzie zadnej zamiany, to tablica jest juz uporzadkowana

        for(i=0;i<N-1;i++)
            if(porownaj(tablica[i], tablica[i+1]))
            {

                // zamiana dwoch sasiednich elementow
                tmp=tablica[i];
                tablica[i]=tablica[i+1];
                tablica[i+1]=tmp;

                // tablica jeszcze nie jest uporzadkowana
                zamienione=1;
            }
    }
    while(zamienione);
}


// sortowanie przez wstawianie (ang. insertion sort)
void wstawianie(int* tablica, int N)
{
    int i, j, tmp;
    for(i=1; i<N; i++)
    {
        // elementy o indeksach 0 do i-1 sa juz uporzadkowane

        tmp=tablica[i]; // wartosc i-tego elementu

        // przesuwanie elementow tablica[j]<=tmp
        j=i-1;
        while(j>=0 && porownaj(tablica[j],tmp))
        {
            tablica[j+1]=tablica[j];
            j--;
		}
        // wstawienie elementu (potrzebne jest dodanie 1 bo j bylo dekrementowane w linii 48)
        tablica[j+1]=tmp;
    }
}

// funkcja wypisujac N elementow z tablicy int
void wypisz(int* tablica, int N)
{
    int i=0;
    for(i=0;i<N;i++)
        printf("%d\n", *(tablica+i));
}

// funkcja kopiujace N elementw typu int
void kopiuj(int* skad, int* dokad, int N)
{
    int i;
    for(i=0;i<N; i++)
        *(dokad++)=*(skad++);
}


int main()
{
    int tablica[ROZMIAR];

    printf("Przed sortowaniem: \n");
    wypisz(nieposortowane, ROZMIAR);


    kopiuj(nieposortowane, tablica, ROZMIAR);
    babelki(tablica, ROZMIAR);

    printf("Po sortowaniu babelkowym: \n");
    wypisz(tablica, ROZMIAR);

    kopiuj(nieposortowane, tablica, ROZMIAR);
    wstawianie(tablica, ROZMIAR);

    printf("Po sortowaniu przez wstawianie: \n");
    wypisz(tablica, ROZMIAR);

    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 306 wizyt
0 głosów
1 odpowiedź 446 wizyt
pytanie zadane 13 czerwca 2018 w C i C++ przez Halpi Początkujący (300 p.)
0 głosów
1 odpowiedź 1,176 wizyt
pytanie zadane 23 listopada 2017 w C i C++ przez antek782 Początkujący (490 p.)

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...