Porządkowanie tablicy

0

Jeśli mam tablicę tab[5000] a w niej elementy które są porozrzucane tzn.: tab[2]:='das' tab[100]:='dfg' tab[322]:='erte' to czy mogę jakoś poustawiać indeksy po kolei? nie przepisującąc tych elementów do innej tablicy?
wykluczam korzystanie z list.

0

Metod sortowania jest bardzo wiele. Najprostsze, aczkolwiek trochę wolne to metody bĄbelkowa i przez wybieranie. Obydwie jak i wiele innych opisane są na 4p.

0

To tak jakbys chciał zamieniać ze sąba adresy komórek pamięci, w ten sposób sie nie da. Zawsze trzeba przepisać wartości komórek.

{$APPTYPE CONSOLE}
{$h+}
// warunek: string=ansistring
// albo piszesz zawsze bezposrednio ansistring
type tabtype=array of string; // array[costam]of string

procedure swapindexes(var t:tabtype;i1,i2:integer);
var i:longint;
begin
  i:=longint(t[i1]);
  longint(t[i1]):=longint(t[i2]);
  longint(t[i2]):=i
end;

var a:tabtype;
begin
  setlength(a,3);
  a[0]:='swira ';
  a[1]:='Ala ';
  a[2]:='ma ';
  writeln('Yoda (reversed) mode: ',a[0],a[1],a[2]);
  swapindexes(a,0,1);
  swapindexes(a,2,1);
  writeln('Normal mode: ',a[0],a[1],a[2]);
  readln
end.

// A tak: sizeof(ansistring/widestring/dynamic array)=4 ... bo to wskazniki ;]
// Tu tez przepisujesz zawartośc komórek, tylko tu wbrew pozorom komórka to wskaznik do obszaru pamieci.

Do postu poniżej:

To nie rób tablicy elementów, tylko wskazników do nich... Mniej danych do przerzucania (only 4 bytes per cell).

0

dziękuję za poświęcenie, ale to co napisałem w temacie to tylko przykład. w istocie właśnie mam tak jak napisał Flabra, tylko że sortowanie trwa trochę za długo, bo strukturę mam dość złożoną. Muszę przysiąść nad algorytmem QuickSorta, bo to chyba jedyne wyjście. oj, czeka mnie wiele zmian w programie. :(

0

Troche może pomóc osobny wątek sortujący. Każesz mu sortować, on wszystko przerzuca do góry nogami a ty możesz w międzyczasie coś robić. Nie wiem, czy to pomoże, wszystko zależy od tego, jak ten program działa.

0

już jest dobrze, wczoraj tomksoft przypomniał mi że istnieją wątki i zaraz postaram się z tym coś pokombinować, W każdym razie z czasem sortowania zszedłem już poniżej sekundy (dla mnie to już jest wielki sukces) ale kombinuje dalej.
nie wiem tylko czy jest sens używania wątków, skoro program poza sortowaniem nie wykonuje jakiś czasochłonnych czynności.

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