Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Algorytm Szybkiego Sortowania



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Matii
Gość





PostWysłany: Sob Cze 30, 2018 1:30 pm  OP    Temat postu: Algorytm Szybkiego Sortowania Odpowiedz z cytatem Pisownia

Witajcie

W ramach nabierania w prawy w programowaniu napisałem własny nowatorski kod - szybkiego sortowania :).
Mam pytanie do was. Czy takie własne pisanie kodów, algorytmów których w necie jest pełno ma znaczenie dla nauki programowania czy to tylko strata czasu ?

Pozdro.

Ps. a o to kod :)
Kod:
program Test;
{ Program testujący rekurencyjną wersję szybkiego sortowania tablicy }
uses Crt;
const
     nmax = 100; { maksymalny rozmiar tablicy }
type
    tablica = array[1..nmax] of integer;
var
   i: { zmienna pomocnicza }
     integer;
   a: tablica;

procedure Szybkie(var a: tablica; lewy,prawy: integer);
{ Rekurencyjna procedura szybkiego sortowania }
{ lewy - lewy kraniec sortowanego wycinka,
  prawy - prawy kraniec sortowanego wycinka }
var
   i, { zmienna przebiegająca lewą część tablicy }
   j, { zmienna przebiegająca prawą część tablicy }
   x, { element środkowy }
   pom, { zmienna pomocnicza do zamiany elementów }
   p: integer;
begin
     i := lewy;
     j := prawy;

     { wybranie środkowego elementu }
     x := (lewy + prawy) div 2;

     while i < j  do
          begin
               while a[i] < a[x] do
                    inc(i); { i := i + 1 }


               while a[j] > a[x] do
                    dec(j); { j := j - 1 }

               if i < j then
                 if i < x then
                   if j > x then
                     begin
                          pom := a[i];
                          a[i] := a[j];
                          a[j] := pom;
                          inc(i);
                          dec(j)
                     end
                   else
                       begin
                            pom := a[i];

                            for p := i to x - 1 do
                               a[p] := a[p + 1];
                            a[x] := pom;

                            dec(x)
                       end
                 else
                     begin
                          pom := a[j];

                          for p := j downto x + 1 do
                             a[p] := a[p - 1];
                          a[x] := pom;

                          inc(x);

                          if j - 1 = i then
                            dec(j)
                     end;
          end; { aż przejrzeliśmy lewą i prawą część tablicy }

     { wywołanie procedury dla lewej części }
     if lewy < x then Szybkie(a,lewy,x - 1);

     { wywołanie procedury dla prawej części }
     if prawy > x then Szybkie(a,x + 1,prawy)
end;

begin
     randomize;
     for i := 1 to 100 do
        a[i] := random(100);

     ClrScr;

     writeln('Losowe elementy tablicy:');
     for i := 1 to 100 do
        write(a[i]:3);

     Szybkie(a,1,100);

     writeln;
     writeln('Tablica posortowana:');
     for i := 1 to 100 do
        write(a[i]:3)
end.
Powrót do góry
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Sob Cze 30, 2018 1:42 pm      Temat postu: Odpowiedz z cytatem Pisownia

Hej, podchodzisz do zagadnienia w sposób szkolny, więc najprawdopodobniej jesteś na studiach, lub w okolicy... ;) aby się nauczyć programować najlepiej pisać kody... dla praktycznych zagadnień... ^^ co do sortowania, to są to raczej klasyczne rzeczy... więc mi np. szkoda czasu na tego typu zagadnienia, ale to zależy też na jakim etapie nauki jesteś... ja naumiałem się metody przez scalanie (rekurencyjna, proponuję się przyjrzeć), i z tego co pamiętam ze średnim czasem nlogn... Co do Twojego przykładu, to zamiast 100 elementów weź 100k elementów... odpal kod, odpal inne kody z sortowaniem, i wyciągnij wnioski... a co do nauki dobrego programowania, to proponuję SPOJ, polski SPOJ, trochę czasu tam straciłem, i może jeszcze tam wrócę... sporo zadanek czeka, nierozwiązanych... ^^
_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




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

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