Responsive image Boda Szilárd weblapja

Laborfeladatok
1. Töltsünk fel egy n elemű tömböt véletlen elemekkel (ehhez a rand() % 100; utasítást használjuk), majd írassuk ki rendezetlen állapotban.
Utána rendezzük növekvő sorrendbe, s írassuk ki a rendezett tömböt.

A tömb rendezését az alábbi dupla forral oldhatjuk meg:
    for (i=0; i< n-1; i++)
        {
            for (j=i+1; j< n; j++)
            {
                //ha a tomb elso feleben valamelyik elem nagyobb, mint a tomb masodik feleben, csereld ki oket
                if ( v[i]> v[j])
                {
                    aux= v[j];
                    v[j]= v[i];
                    v[i]=aux;
                }
            }
        }
Ha valaki megoldja a cserét segéváltozó és beépített függvény használata nélkül (pl swap) az kap egy 10 es t a naplóba.


2 Feladat: Írjunk egy C++ programot, amely csökkenő sorrendbe rendezi az előbbi tömböt!

Házi Feladat:
1. Hasonlítsuk össze az előbbi algoritmus hatékonyságát a buborékos rendezés hatékonyságával. A buborékos rendezéshez lásd a megoldott feladatot.
Az összehasonlítást N=10,100,1000,10000 es tömbökre végezzük, két oszlopban feltüntetve a két rendezéshez szükséges időt.
Házi Feladat beküldési határideje:
2020 február 4, 23:59, az ezután küldött házik 4 esek lesznek.
A házi feladattal mindenki küldje el az összehasonlítást H02_Pelda_Bela.txt vagy H02_Pelda_Bela.xls néven (attól függően, hogy Excelben, vagy egyszerű szövegfileban készítette) illetve a két rendezést, H02_1_Pelda_Bela.cpp a normált, s H02_2_Pelda_Bela.cpp néven a buborékost. (Példa Béla helyett természetesen az aktuális vezeték és keresztnévvel)
Ne legyenek az elnevezésben ékezetek, üres helyek, vagy egyéb írásjelek, stb.!

Megoldott feladat:
     Buborékos rendezés
    //szukseges konyvtarak deklaralasa
    #include <iostream>

    using namespace std;

    //fofuggveny
    int main()
    {
    //szukseges valtozok deklaralasa
        int i, j, v[100], aux, n;
    //kiirja, hogy n=
        cout << "n=";
    //beolvassa az n erteket
        cin >> n;
    //vegigmegyunk a tombon s egyenkent beolvassuk az ertekeket
        for(i=0; i<n; i++){
            //kiirja, hogy v[i]=
            cout << "v["<<i<<"]=";
            //beolvassa a v[i] erteket
            cin >> v[i];

        }

        //buborekos rendezes algoritmus
        bool csere;
        int rendezettekSzama = 1;
        do
        {
            //kezdetben nincs csere
            csere = false;
            //elmegyunk a tomb meg nem rendezett utolso elotti elemeig
            for (i = 0; i < n-rendezettekSzama; i++)
                //ha a tomb i+1 edik eleme nagyobb az i ediknel, csereljuk oket
            {
                if (v[i] > v[i+1])
                {
                    aux = v[i+1];
                    v[i+1] = v[i];
                    v[i] = aux;
                    //volt csere, tehat a csere valtozo igaz lesz
                    csere = true;
                }
            }
            //a rendezettek szamat noveljuk, mert meg egy elem a helyere kerult a tomb jobb feleben
            rendezettekSzama++;
        }
        while(csere);
    //kiiras
        for (i=0; i < n; i++)
        {
            //kiirja a v[i] t
            cout << v[i] << " ";
        }
        return 0;
    }