Jak v C naprogramovat bubblesort?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zanynka
nováček
Příspěvky: 4
Registrován: říjen 12
Pohlaví: Žena
Stav:
Offline

Jak v C naprogramovat bubblesort?

Příspěvekod Zanynka » 06 říj 2012 15:56

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

Reklama
Štučka
Level 2.5
Level 2.5
Příspěvky: 279
Registrován: srpen 12
Pohlaví: Žena
Stav:
Offline

Re: C

Příspěvekod Štučka » 06 říj 2012 16:32

Může být C++, spíše než C?

Zanynka
nováček
Příspěvky: 4
Registrován: říjen 12
Pohlaví: Žena
Stav:
Offline

Re: C

Příspěvekod Zanynka » 06 říj 2012 17:16

no spíš c

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C

Příspěvekod faraon » 06 říj 2012 17:28

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 ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Zanynka
nováček
Příspěvky: 4
Registrován: říjen 12
Pohlaví: Žena
Stav:
Offline

Re: C

Příspěvekod Zanynka » 06 říj 2012 17:30

no a můžu se zeptat jak se to pak vypíše na obrazovku, ted ykde mám napsat printf,,,,???

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C

Příspěvekod faraon » 06 říj 2012 17:33

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:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Zanynka
nováček
Příspěvky: 4
Registrován: říjen 12
Pohlaví: Žena
Stav:
Offline

Re: C

Příspěvekod Zanynka » 06 říj 2012 17:37

:D, a to už je ten po tom bubble sortu??

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C

Příspěvekod faraon » 06 říj 2012 17:41

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...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti