jak w turbo pascalu posortować tablice <ort>dwu wymiarową</ort> np. algorytmem bąbelkowym ?
2 wymiarową.. no dobra ale w jaki sposób należy poukładac ? :]
masz np:
4 8
9 1
I ma być
4 8
1 9
czy np:
1 4
8 9
itd. itp. musisz sprecyzować
// chyba że są jakieś ogólnie przyjęte standardy :>
<ort>po kolei </ort>przez całą tablice czyli metoda 2
Powiedzmy, że t : array [0..n-1, 0..m-1], indeksuj ją tak: t[x div m, x mod m] i traktuj jak jednowymiarową.
albo zrobic to tak :
for z:=1 to max_i*max_k do //max_i*max_k - ilosc porownan do wykonania
begin
for i:=1 to max_i do
for k:=1 to max_k-1 do
begin
if tab[i,k]>tab[i,k+1] then
begin
// zamiana wiekszej i mniejszej
temp:=tab[i,k];
tab[i,k]:=tab[i,k+1];
tab[i,k+1]:=temp;
end;
// porownanie liczby z ostatniej komorki w wierszy
// z liczba z pierwszej komorki w nastepnym wierszu
if i<>max_i then
if tab[i,k+1]>tab[i+1,1] then
begin
// zamiana wiekszej z mniejsza
temp:=tab[i+1,1];
tab[i+1,1]:=tab[i,k+1];
tab[i,k+1]:=temp;
end;
end;
nie obiecam ze dziala na 100% bo pisalem to dawno.. i nie wiem czy jest to najbardziej optymalna wersja, ale moze Ci sie przydac
moglibyśnie wytłumaczyć sposób rozumowania bo nie <ort>zabardzo </ort>rozumiem
hmm.. mam nadzieje, ze rozumiesz samo sortowanie babelkowe ? chodzi o to, żeby porównywać element i-ty tablicy z i+1-szym... i teraz jesli i-ty jest wiekszy od i+1-szego to zamieniasz je miejscami [jesli sort od najmniejszej do najwiekszej]... takie porownania w tablicy jednowymiarowej musisz zrobic k - 1 (gdzie k to jest ilosc komorek w tablicy)..
dla tablicy dwuwymiarowej jest to takie, ze porownan musi byc wiecej.. jesli kiedys dobrze wyliczylem to k*l - 1 (k - ilosc wierszy, l - ilosc kolumn)... i trzeba pamietac o tym aby porownac ostatnia liczbe w wierszu z pierwsza liczba w wierszy nastepnym... wszytsko co tutaj wlasnie napisalem da sie wyczytac z kodu, ktory wczesniej podalem
btw.. prosilbym o zweryfikowanie ilosci porownan... czy wiersze*kolumny - 1 to nie za duzo ??
dzięki wcześnie nie rozumiałem bo myślałem że jednynki to l ;P
A jak posortowac KOlumny w tablicy 2 wymiarowej rosnaco?