Skocz do zawartości

sortowanie malejące


Tor_

Polecane posty

Pozdrawiam wszystkich :)

 

Tak sobie wymyśliłem że mój "stwór" będzię ładnie sortowwał liczby od "najgrubszych" do "najchudszych" Oczywiście nie za dużo bo jestem bardo początkujący I maży mi sie samemu to pojąć a nie skopiowac od kogoś.Wiec dla 4 liczb .I ok jak jest np.10,20 ,30,40 .No to posortuje albo chyba raczej poodwraca. ale jak pozmieniam kolejnosć liczb to wyskakują zera i coś nie chce sortowac malejąco .Buntuje się :) Można go jakoś zmusic do pracy .Chyba zle to sobie wymysliłem .Może ktoś by mnie z deka pokierował (oczywiście bez ostrych uwag) Bo sie "spłoszę" :)

 


Program sortowaniemalejace;

uses crt;

const size=4;
var
  tab: array[1..size] of integer;
  tmp: integer;
  i, j: integer;
begin
    clrscr;


    for i:=1 to size do
    begin
         write(i, ' element: ');
         readln(tab[i]);
    end;
    for i:=size downto 2 do
      for j:=size downto size+2-i do
        begin
        if tab[j-1]<tab[j] then

                tmp:=tab[j];
                tab[j]:=tab[j-1];
                tab[j-1]:=tmp;

         end;
writeln;
    for i:=1 to size do
    begin
         writeln(tab[i],'  ');
    end;

    begin
         writeln;
         writeln('program dokonal sortowania malejacego wpisanych liczb.Dziekuje za uwage ');

         writeln('wcisnij Enter aby wyjsc z programu');
    end;
    readkey;
end.

Link do komentarza
Udostępnij na innych stronach

  • 8 months later...

Optymalny algorytm sortowania bubble_sort to :

 

For i:=1 to n - 1 do
Begin
flaga := false;
for j := 1 to n -1 do
 	if tab[j] > tab[j+1] then
   	Begin
  	temp := tab[j];
  	tab[j] := tab[j+1];
  	tab[j+1] := temp;
  	flaga := true;
   	End;
      if flaga = false then
    	         break;
End;

Link do komentarza
Udostępnij na innych stronach

@up

Jak już mu dajesz optymalny czy tam zoptymalizowany kod tego sortowania to weź się postaraj żeby on był naprawdę optymalnie zrobiony i żeby działał najszybciej jak się da, a nie dajesz mu stwora który ni to optymalny ni zoptymalizowany xD

 

@Edit

Jak by co to chodziło mi o te 5 działań + / - które można zamknąć w 2 działaniach z 2 dodatkowymi zmiennymi co pozwoli na zaoszczędzenie sporej ilości czasu przy większych tablicach, o porównanie w drugim if'ie. I chyba pierwsza pętla nie przejdzie po wszystkich elementach bo pascal ma indeksy domyślnie od 0.

 

 

Jbc to ja używam swojej procedury do sortowania (fakt to delphi) kod delphi mi nie działa xD

 


{
Język : Pascal / Object Pascal
Typ   : Procedura
Opis  : Procedura wykorzystująca sortowanie bąbelkowe.
}
procedure BubleSort(var Tab : array of Integer);
 Var
  i, j : Integer;              //zmienne dla petli
  l, m : Integer;              //zmienne z dlugoscia
  temp : Integer;              //zmienna tymczasowa
begin
l := Length(Tab) - 1;          //Przypisanie dlugosci tablicy
m := l - 1;                    //Ustalenie maksymalnej ilosci przejsc

for i := 0 to m do
  for j := i + 1 to l do
if  Tab[j] > Tab[i] then   //Porównanie dwóch elementów tablicy
     begin
       temp := Tab[i]; 		//Rozpoczęcie zamiany elementów
       Tab[i] := Tab[j];
       Tab[j] := temp; 		//Koniec zamiany elementów
     end;

end;

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...