Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

Sortowanie przez scalanie i sortowanie przez wstawianie



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Algorytmy + inynieria oprogramowania
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
Matii
Go





PostWysany: Pon Wrz 24, 2018 8:15 am  OP    Temat postu: Sortowanie przez scalanie i sortowanie przez wstawianie Odpowiedz z cytatem Pisownia

Witajcie
Co sdzicie o takiej metodzie sortowania przez scalanie ? Czy ma ona sens ? Czy przypiesza tradycyjne sortowanie przez scalanie ? Co prawda stworzyem kod, ktry dziaa, jednak nie mog w internecie znale na niego odpowiedzi, wic chtnie wysucham waszych opinii :).
Pozdro.

Kod:
uses Crt;
const
     n = 16; { liczba elementw tablicy }
     dlugosc = 8; { dugo poszczeglnych podtablic, wartoci - 1,2,4,8 -> dla n = 16 }
var
   tab: array[1..n] of integer;
   i1,i2: integer;

procedure Polacz(lp,pp: integer);
var
   i,j,pom: integer;
begin
     { writeln('pocztek lewej tablicy: ',lp,' pocztek prawej tablicy: ',pp,' dugo: ',abs(lp - pp)); }

     if abs(lp - pp) = dlugosc then
       for i := lp to (lp + (abs(lp - pp) * 2)  - 1) - 1 do
          if tab[i] > tab[i + 1] then
            begin
                 pom := tab[i + 1]; j := i;

                 while (pom < tab[j]) and (lp <= j) do
                      begin
                           tab[j + 1] := tab[j];
                           dec(j) { j := j - 1;}
                      end;
                 tab[j + 1] := pom;
            end
end;

procedure Podziel(p: integer; k: integer);
var
   s: integer;
begin
     s := (p + k) div 2;

     if p < k then
       begin
            Podziel(p,s);
            s := s + 1;
            Podziel(s,k);
            Polacz(p,s)
       end
end;

begin
     ClrScr;
     randomize;

     for i1 := 1 to n do
        begin
             tab[i1] := random(n);
             write(tab[i1],' | ':2)
        end;

     writeln;
     writeln('Dziaanie algorytmu:');

     i1 := 1; i2 := n;

     Podziel(i1,i2);

     {writeln;}

     for i1 := 1 to n do
        write(tab[i1],' | ':2)
end.
Powrt do gry
Matii
Go





PostWysany: Pon Wrz 24, 2018 2:17 pm  OP(?)    Temat postu: Sortowanie przez scalanie i sortowanie przez wstawianie Odpowiedz z cytatem Pisownia

Wersja druga nieco uproszczona :).
Kod:
uses Crt;
const
     n = 16; { liczba elementw tablicy }
     dlugosc = 8; { dugo poszczeglnych podtablic, wartoci - 1,2,4,8 dla n = 16 }
var
   tab: array[1..n] of integer;
   i1,i2: integer;

procedure Polacz(lp,pp: integer);
var
   i,j,pom: integer;
begin
     writeln('pocztek lewej tablicy: ',lp:2,', pocztek prawej tablicy: ',pp:2,', dugo: ',(pp - lp):2);

     if pp - lp <= dlugosc then
       for i := lp to (lp + ((pp - lp) * 2)  - 1) - 1 do
          if tab[i] > tab[i + 1] then
            begin
                 pom := tab[i + 1]; j := i;

                 while (pom < tab[j]) and (lp <= j) do
                      begin
                           tab[j + 1] := tab[j];
                           j := j - 1
                      end;
                 tab[j + 1] := pom;
            end
end;

procedure Podziel(p: integer; k: integer);
var
   s: integer;
begin
     s := (p + k) div 2;

     if p < k then
       begin
            Podziel(p,s);
            s := s + 1;
            Podziel(s,k);
            Polacz(p,s)
       end
end;

begin
     ClrScr;
     randomize;

     for i1 := 1 to n do
        begin
             tab[i1] := random(n);
             write(tab[i1],' | ':2)
        end;

     writeln;
     writeln;
     writeln('Dziaanie algorytmu:');
     writeln;

     i1 := 1; i2 := n;

     Podziel(i1,i2);

     writeln;
     writeln;

     for i1 := 1 to n do
        write(tab[i1],' | ':2)
end.
Powrt do gry
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Algorytmy + inynieria oprogramowania Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.14029 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |