Tor_ Napisano Grudzień 6, 2010 Zgłoś Share Napisano Grudzień 6, 2010 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 More sharing options...
Adam27 Napisano Grudzień 6, 2010 Zgłoś Share Napisano Grudzień 6, 2010 Proponuję ten blok tmp:=tab[j]; tab[j]:=tab[j-1]; tab[j-1]:=tmp; objąć begin..end'em, bo jak na razie warunek dotyczy tylko pierwszej z tych instrukcji. Etharnion - 2D RPG Szukam grafika chętnego do współpracy przy projekcie. Link do komentarza Udostępnij na innych stronach More sharing options...
Tor_ Napisano Grudzień 11, 2010 Autor Zgłoś Share Napisano Grudzień 11, 2010 dziękuj po zastosowaniu sie do tej rady działa idealni:) Link do komentarza Udostępnij na innych stronach More sharing options...
Home Napisano Sierpień 21, 2011 Zgłoś Share Napisano Sierpień 21, 2011 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 More sharing options...
Stelma Napisano Sierpień 21, 2011 Zgłoś Share Napisano Sierpień 21, 2011 @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 More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.