Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

BubbleSort - pytanie o podstawy

Ostatnio zmodyfikowano 2015-10-19 01:29
Autor Wiadomość
carlosmay
» 2015-10-18 23:46:25
Napisz cały kod z zainicjalizowaną tablicą, bo na razie to dyskusja jest bez sensu.


int tab[] = { 2, 1, 3, 5, 3 };
 dla takiego ciągu twój kod pomija 2 w sortowaniu.


ciag: 2,1,3,5,4

dla i=1, j=1
mamy tab[1] > tab [2] czyli 2 > 1
to zamieniamy kolejnosc i mamy ciag: 1,2,3,5,4
 czy to nie jest paplanie dla paplania?
P-138856
maciek1o3s
Temat założony przez niniejszego użytkownika
» 2015-10-18 23:48:13
Musisz od razu być taki niemiły? Chyba po to jest forum żeby zapytać się o to czego się nie wie nie rozumie. Gdybym znalazł odpowiedź lub dobry opis tego skryptu w książce nie traciłbym czasu na wyjaśnianie zagadnień na forum.

Także jeżeli jest ktoś na tyle miły i mógłby odpowiedzieć mi czemu mamy zewnętrzne for (jesli to wewnetrzne juz mi uporzadkowalo caly rzad? Po co mam algorytmowi kazac przechodzic przez wszystkie i od i=1 do i=n-1 jesli wszystko co mialo byc zrobione zostalo zrobione dla i=1?) byłbym wdzięczny.


@carlosmay: Chodzi mi o to, że jeśli dla i=1 wykonuje całe sortowanie to po co mam potem przelatywać jeszcze przez wszystkie i aż do i<N? To będą 4 puste loopy do wykonania.
P-138857
carlosmay
» 2015-10-18 23:51:05
Musisz od razu być taki niemiły? Chyba po to jest forum żeby zapytać się o to czego się nie wie nie rozumie.
 nie było takiego zamiaru.

W książkach są błędy i będą.


Chodzi mi o to, że jeśli dla i=1 wykonuje całe sortowanie to po co mam potem przelatywać jeszcze przez wszystkie i aż do i<N? To będą 4 puste loopy do wykonania.
 bo jak ciąg będzie bardzo długi i mocno pomieszany nie uporządkuje się po pierwszej kolejce.
P-138858
maciek1o3s
Temat założony przez niniejszego użytkownika
» 2015-10-18 23:55:06
Cały kod spróbowałem napisać, ale nie jest on poprawny bo wywala mi błąd na cpp.sh

C/C++
// Example program
#include <iostream>
#include <string>

int tab[] = { 2, 1, 3, 5, 3 };

void BubbleSort()
{
    for( int i = 1; i < 5; i++ )
    for( int j = 1; j <= 5 - i; j++ )
    if( tab[ j ] > tab[ j + 1 ] )
    {
        int x = tab[ j ];
        tab[ j ] = tab[ j + 1 ];
        tab[ j + 1 ] = x;
    }
}

błąd to:
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
 

Chciałbym zauważyć tylko, że mnie nie chodzi o pisanie tutaj programu ale o zrozumienie czemu mamy zewnętrzną petlę for, jeśli nasza tabela zostaje uporzadkowana dla warunku i=1 (chyba, że moj sposob rozumowania ktory jest ponizej jest zly):

dla i=1, j=1
mamy tab[1] > tab [2] czyli 2 > 1
to zamieniamy kolejnosc i mamy ciag: 1,2,3,5,4

dla j=2 mamy nie spelniony warunek tab[2]>tab[3]

dla j=3 mamy nie spelniony warunek tab[3]>tab[4]

dla j=4 mamy spelnione 4<=5-1 i tab[4]>tab[5]

tak wiec mamy juz tutaj uporzadkowana tabele 1,2,3,4,5

ale algorytm o tym nie wie wiec lecimy dalej

dla j=5 mamy nie spelnioy warunek j<=n-i, bo mamy 5<=4

to dalej mamy:
i=2, j=1
i lecimy od poczatku calosc, tylko po co jeśli tabela już jest uporządkowana?
P-138859
michal11
» 2015-10-18 23:57:51
Miałem już nie pisać, ale ciągle wybierasz sobie tablicę dla której akurat to zadziała, spróbuj z 5,4,3,2,1
P-138860
carlosmay
» 2015-10-19 00:01:41
C/C++
for( int i = 0; i < 5; i++ )
for( int j = 0; j < 5 - 1; j++ )
if( tab[ j ] > tab[ j + 1 ] )
{
    int x = tab[ j ];
    tab[ j ] = tab[ j + 1 ];
    tab[ j + 1 ] = x;
}
 tak powinno to wyglądać.
P-138861
maciek1o3s
Temat założony przez niniejszego użytkownika
» 2015-10-19 00:03:46
@michal11: Dzięki, teraz rozumiem.

@carlosmay: Dzięki, ale uważam że nie masz racji. Po pierwsze nadal wywala błąd na cpp.sh, a po drugie to wersja z j<=n-i jest lepsza bo jest szybsza (nie sprawdzasz koncowki ktora juz uporzadkowales).
P-138862
carlosmay
» 2015-10-19 00:05:56
Wywala, bo nie masz funkcji main() i program nie ma jak zacząć działać.

j <= n - i
 dla tego
tab[ j + 1 ]
 wyjdzie poza zakres tablicy.
P-138863
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona