sortowanie tablicy dwuwymiarowej

Odpowiedz Nowy wątek
2007-06-07 16:33
edd2
0

witam!

mam mly problem otoz chcialbym posortowac tablice 10x10 (jaki sposob nie wazne np. babelkowo).
i teraz pytanie.... jak to zrobic na tablicy dwu wymiarowej??

Prosilbym o jakiss kawalek kodu, ktory pomoze mi zrozumiec schemat sortowania tablic dwuwymiarowych (bo musze napisac 3 rozne algorytmy sortowan na tablicy 10x10)

Pozdro

Pozostało 580 znaków

2007-06-07 17:06
0

Zależy jak na to patrzeć czy ma to być posortowane wg kolumn, wierszy, komórek


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2007-06-08 11:05
edd2
0

to akurat bez roznicy .... moze byc wg. wierszy.
Chodzi mi tylko o zalapanie ja kto sie robi dla tablic dwu wymiarowych

Pozostało 580 znaków

2007-06-08 11:10
2007-06-08 15:05
edd2
0

no wlasnie pod takimi haslami w google szukalem i nic konkretnego nie wyczilem dlatego zadalem pytanie na forum :/

Pozostało 580 znaków

2007-06-08 15:24
0

=takie pytanie to do newbie

schematycznie bedzie to

petla po wierszach
sortowanie danego wiersza

np.:
for wiersz:=1 to iloscWierszy do
for i:=1 to n do
for j:=1 to i-n do
if tab[wiersz,j] < tab[wiersz,j+1] then
begin
tmp:= tab[wiersz,j+1];
tab[wiersz,j+1]:= tab[wiersz,j];
tab[wiersz,j]:= tmp;
end;

Pozostało 580 znaków

2007-06-08 16:13
edd2
0

dobra ... troche poczytalem i cos utworzylem ...:

program SortowanieBabelkowe;

uses crt;

const 
    M = 10; 
    N = 10;
var
  tab : array[1..M, 1..N] of integer;

var
  i, j: integer;
  k, x: integer;
begin
    clrscr;

    writeln('Tablica przed sortowaniem: '); 

    randomize;
    for i := 1 to M do 
    begin
        for j := 1 to N do
        begin 
            tab[i, j] := random(100);
            write(tab[i, j], ' ');
        end;
    end; 
    writeln;

for k := 1 to M do
    for i := 1 to N do
         for j := 1 to i-N do
             if tab[k, j] < tab[k, j+1] then
             begin
               x := tab[k, j+1];
               tab[k, j+1] := tab[k, j];
               tab[k, j] := x;
             end;
    writeln;
    writeln('Tablica po sortowaniu: '); 

    for i := 1 to M do 
    begin
        for j := 1 to N do
        begin 
            tab[i, j] := random(100);
            write(tab[i, j], ' ');
        end;
    end; 
    writeln;
end.

niestety to nie do konca dziala ....
czemu ??

Pozdrawiam i dzieki za pomoc

Pozostało 580 znaków

2007-06-08 18:43
edd2
0

to inaczej bo moze cos zle rozumiem ... :P

mam sobie tablice dwuwymiarowa, ktora zapelniam w ten sposob:

for i:=1 to M do
    for j:=1 to N do
    begin
        tab[i, j] := random(100);
        write(tab[i, j], ' ' );
    end;

i przykladem takiego zapelnienia bedzie:

42 68 92 90 8 15 35 17 61 19 99 82 42 11 90 95 79 78 71 30 98 61 23 92 66 17 51 6
1 8 1 58 35 90 16 24 73 33 87 67 59 68 94 21 89 52 56 41 66 80 90 42 31 26 48 40 8
4 40 59 12 64 55 98 24 11 69 85 86 44 34 65 92 78 8 89 74 50 41 17 0 99 3 97 75 1
7 85 25 84 26 76 61 78 4 44 48 3 94 59 90 82 29

i chcialbym by po sortowaniu wynik byl taki:
0 1 3 3 4 8 8 8 11 11 12 15 16 17 17 17 17 19 21 23 24 24 25 26 26 29 30 31 33 34
35 35 40 40 41 41 42 42 42 44 44 48 48 50 51 52 55 56 58 59 59 59 61 61 61 61 64
65 66 66 67 68 68 69 71 73 74 75 76 78 78 78 79 80 82 82 84 84 85 85 86 87 89 89
90 90 90 90 90 92 92 92 94 94 95 97 98 98 99 99

to to co zrobilem powyzej to nie do konca dziala :/

Pozostało 580 znaków

2007-06-09 18:09
Fellx
0

Ja bym to zrobił tak:

program SortBomCalejTab2wym;  // Sortowanie tablicy 2-wymiarowej

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  M = 10;
  N = 10;
var
  tab : array[1..M, 1..N] of integer;
  i,j,k,l,x: integer;

begin
  writeln('Tablica przed sortowaniem: ');

          // Generowanie tablicy
  randomize;
  for i := 1 to M do
  begin
    for j := 1 to N do
      begin
        tab[i, j] := random(100);
        write(tab[i, j]:3, ' ');
      end;
    writeln;
  end;
  writeln;

          // Sortowanie tablicy
  l:=M*N;          // liczba elementow tablicy
  for k:=1 to l do
    begin
      for i := 1 to M do
        for j := 1 to N-1 do
          begin
           if tab[i,j] > tab[i,j+1] then
             begin
               x := tab[i, j+1];
               tab[i, j+1] := tab[i, j];
               tab[i, j] := x;
             end;
           if (j=N-1) and (i<>M) then
             if tab[i,j+1] > tab[i+1,1] then
               begin
                 x := tab[i+1, 1];
                 tab[i+1, 1] := tab[i,j+1];
                 tab[i, j+1] := x;
               end;
          end;
      l:=l-1; // Po kazdym przejsciu petli jeden element jest na swoim miejscu
   end;       // czyli nie trzeba go juz sprawdzac

        // Wyswietlanie tablicy
  writeln('Tablica po sortowaniu: ');
  for i := 1 to M do
    begin
      for j := 1 to N do
        write(tab[i, j]:3, ' ');
      writeln;
    end;

  readln;
end.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0