Sortowanie bąbelkowe

From Nasza Pasja - Programowanie

Implementacja w C++


void babel(int *tab, int n)
{
        int tmp;
        bool zm;
        for (int i=0; i<n; i++, zm=false)
        {
                for (int j=0; j<n-1; j++)
                {
                        if (tab[j]>tab[j+1])
                        {

                                tmp = tab[j];
                                tab[j] = tab[j+1];
                                tab[j+1] = tmp;
                                zm=true;
                        }
                }
                if(zm==false) break;
        }

}

Można to rozwiązać też w taki sposób:


#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

int main()
{

        float tab[100],n;
        int ab;

        ab=-1;
        n=1;

        do
        {
                cout<<"Podaj "<<n<<" liczbe: ";             // Podanie przez uzytkownika Max 100 liczb.
                ab++;
                n++;

        } while (scanf("%f",&tab[ab])==1);          // Po wpisaniu znaku innego od liczby konczy sie petla

        int zm;
        int i,w,m;
        cout<<"ab"<<ab<<endl;

        do{
                i=-1;
                zm=0;
                do
                {
                        i++;
                        if (tab[i]>tab[i+1])
                        {
                                swap(tab[i],tab[i+1]);                    // Zamiana miejscami tab[i] i tab[i+1]
                                zm=1;                                     //Jezeli zaszla jakas zmiana zm=1;
                        }

                } while (i<ab-2);                         //Petla zakonczy sie jesli i bedzie mniejsze od (ab-2)

        } while (zm==1);                          // Petla zakonczy sie jesli nie nastapi zadna zmiana miejscami w petli wyzej.

        i=0;

        do{
                cout<<tab[i]<<", ";                       // Wyswietlanie
                i++;                                      // liczb w
        } while (i<ab);                           // kolejnosci rosnacej

        cout<<endl<<endl;

        system("pause");
        return 0;
}