Sortowanie bąbelkowe na sortowanie głupie

0

Witam !
Chciałbym zamienić sortowanie bąbelkowe na sortowanie głupie. Problem polega na tym że nie wiem co muszę wpisać w kodzie aby po zamienieniu miejscami liczby większej na mniejszą sortowanie od razu szło od początku. Nie chodzi mi o to aby ktoś za mnie napisał kod tylko żeby jakoś mnie na to nakierował i żebym sam mógł to napisać. Za pomoc z góry dziękuję :)

program SortGlupie;
uses crt;
type
   tablica1=array[1..5] of integer;
var
   i,v,x,y:integer;
   tab:tablica1;
BEGIN
        clrscr;
        randomize;
        for i:=1 to 5 do
           tab[i]:=random(100)-50;
        for i:=1 to 5 do
        write(tab[i]:4);

        y:=5;
        for v:=1 to y-1 do
  begin
        for i:=1 to y-v do
        if tab[i]>tab[i+1]  then begin
        x:=tab[i];
        tab[i]:=tab[i+1];
        tab[i+1]:=x;
     end;
  end;
  writeln;
        for i:=1 to 5 do
        write(tab[i]:4);
readln;
end. 
0

a w czym ty masz problem ?
to

       y:=5;
        for v:=1 to y-1 do
  begin
        for i:=1 to y-v do
        if tab[i]>tab[i+1]  then begin
        x:=tab[i];
        tab[i]:=tab[i+1];
        tab[i+1]:=x;
     end;
  end;

jest jedno sortowanie i usuwasz to i dajesz inne jakie ci się żywnie podoba tylko musisz zadeklarować nowe zmienne jakie jest wymagane ;]

0

musisz zadeklarować nowe zmienne

Jakie nowe zmienne? O_o

Jak już mówiłem a zły mike mi usunął, wystarczy jedno goto. Ale autor nie oczekuje od nas rozwiązania więc nie powiem gdzie to ma być.
Dodatkowo, zauważyłem że kod który autor podał to nie sortowanie bąbelkowe, więc wydaje mi się że zły gotowiec.

0

Ok trochę nad tym problemem pomyślałem i chyba do tego doszedłem :

program SortGlupie;
uses crt;
type
   tablica1=array[1..5] of integer;
var
   i,v,x,y:integer;
   tab:tablica1;
BEGIN
clrscr;
randomize;
   for i:=1 to 5 do
   tab[i]:=random(100)-50;
       for i:=1 to 5 do
       write(tab[i]:4);
   y:=5;
       repeat
          for i:=1 to y-1 do
           if tab[i]>tab[i+1]  then begin
                x:=tab[i];
                tab[i]:=tab[i+1];
                tab[i+1]:=x;
             v:=1;
          end;
          v:=v+1;
       until v=5;

    writeln;
       if tab[i]<tab[i+1] then
       for i:=1 to y do
       write(tab[i]:4);
   readln;
end.
 
0

for i:=1 to 5 do

a jak zmienisz rozmiar tablicy na 6 elementów, to będziesz miał piętnaście miejsc w których trzeba będzie to poprawić. pisz tak:

for i:=low(tablica1) to high(tablica1) do

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.