Stránka 1 z 1

Jak v C naprogramovat bubblesort?

Napsal: 06 říj 2012 15:56
od Zanynka
Ahoj, potřebovala bych pomoc, mám za úkol vytvořit program v C, který seřadí prvky pole podle vzestupně podle velikosti metodou "bubble sort". Nevíte někdo jak na to .??

Re: C

Napsal: 06 říj 2012 16:32
od Štučka
Může být C++, spíše než C?

Re: C

Napsal: 06 říj 2012 17:16
od Zanynka
no spíš c

Re: C

Napsal: 06 říj 2012 17:28
od faraon
Bubblesort funguje tak, že porovnáváním sousedních dvojic od začátku pole postupně vybubláš nejvyšší číslo na nejvyšší pozici - na konec pole.
Potom ho znovu procházíš zdola a další nejvyšší hodnotu vybubláš na druhou pozici.
Pak začneš zase zdola, a další nejvyšší nalezenou hodnotu vybubláš na třetí pozici...
A tak dál, až ti na nejnižší pozici pole zůstane nejnižší číslo:

Kód: Vybrat vše

int i,j,w,pole[POCET_PRVKU];
...
for (i=POCET_PRVKU-1;i>0;--i)
    for (j=0;j<i;++i)
        if (pole[j]>pole[j+1])
           {
           temp=pole[j];
           pole[j]=pole[j+1];
           pole[j+1]=temp;
           }

Pokud potřebuješ opačné pořadí, od největšího po nejmenší, stačí otočit znaménko > v tom if() na <.

Psal jsem to z hlavy, tak to nejdřív otestuj, jestli tam není nějaká drobná chybička ;-)

Re: C

Napsal: 06 říj 2012 17:30
od Zanynka
no a můžu se zeptat jak se to pak vypíše na obrazovku, ted ykde mám napsat printf,,,,???

Re: C

Napsal: 06 říj 2012 17:33
od faraon
Podobnou smyčkou, jakou do pole načítáš hodnoty:

Kód: Vybrat vše

for (i=0;i<POCET_PRVKU;++i)
    printf("%d\n",pole[i]);


Pro inspiraci si můžeš přečíst můj avatar :lol:

Re: C

Napsal: 06 říj 2012 17:37
od Zanynka
:D, a to už je ten po tom bubble sortu??

Re: C

Napsal: 06 říj 2012 17:41
od faraon
Jo, to byl ten výpis. Při načítání jen místo printf() dáš scanf(). Pokud tedy předem znáš počet prvků, jinak ten program budeš muset trochu upravit...