Nietypowa tablica

0

Potrzebna mi tablica booleanów: tab[a]=>TRUE tyle że a<106 a tab :array [1..104] czy jest jakiś sposób odwołania się podanego a niż zapisanie tego w postaci

type sth=record
    a:Integer;
    b:Boolean;
end;
var tab:array [1..10^4] of sth;

przejście po całej tablicy i wyszukanie zadanego a i sprawdzenie wtedy b ??

Nie mogę mieć tablicy o długości większej niż 10^4.

Mam nadzieję że ktoś mnie zrozumie :P

0

Przeczytaj jeszcze raz to co napisales i jak zrozumiesz to przetlumacz to na cos bardziej zrozumialego.

0

To może inaczej:
Mam n w tablicy [1..n] niepowtarzających się liczb od 1 do 1000n ułożonych losowo. Do każdej z tych liczb mam przypisać Booleana. Jak to zrobić, żeby można było się odwoływać do Booleana wskazywanego przez daną liczbę (znam jej wartość ale nie kolejność podawania)??

0

Jaka maksymalna wartosc moze byc w tablicy?

0

n może być rzędu 107. A odwołań do Booleanów około 1010 :/

0

wielkość tablicy <ok65000

oblicz sobie ile max możesz : xydane
dane w przypadku boolean=1
ale jesli masz rozbudowany program i już zuzywasz gdzieś pamieć bedzie na mniejsza do wykożystania:]
Aby mieć wiecej pamieci użyj zmiennych wskaźnikowych:P, ale i tak duzo nie uzyskasz bo kilka razy 65000

0
cccc432432 napisał(a)

wielkość tablicy <ok65000

oblicz sobie ile max możesz : xydane
dane w przypadku boolean=1
ale jesli masz rozbudowany program i już zuzywasz gdzieś pamieć bedzie na mniejsza do wykorzystania:]
Aby mieć wiecej pamieci użyj zmiennych wskaźnikowych:P, ale i tak duzo nie uzyskasz bo kilka razy 65000

Mógłbyś jaśniej :| </quote>

0

Czy to musi byc tablica? Lub inaczej, czy kolejnosc elementow w tablicy jest wazna? Czy najwazniejsze jest to by pobrac wartosc logiczna dla jakiejs wartosci z tablicy?

0
foflik napisał(a)

Czy to musi byc tablica? Lub inaczej, czy kolejnosc elementow w tablicy jest wazna? Czy najwazniejsze jest to by pobrac wartosc logiczna dla jakiejs wartosci z tablicy?

Wartość logiczna jest ważniejsza

0

To tak: aby zmiescic 1010 potrzebujesz 34 bitow, najlatwiej bedze zrobic tablice obiektow liczbowych 64 bitowych (dawno nie pisalem ale jest chyba cos takiego jak int64 lub __int64), mlodsze bity masz na liczbe a strsze (wystarczy tylo jeden) na wartosc logiczna, sortujesz cala tablice i zamiast przeszukiwac liniowo przeszukujesz binarnie czyli z 107 schodzisz do ok 24.

0
foflik napisał(a)

To tak: aby zmiescic 1010 potrzebujesz 34 bitow, najlatwiej bedze zrobic tablice obiektow liczbowych 64 bitowych (dawno nie pisalem ale jest chyba cos takiego jak int64 lub __int64), mlodsze bity masz na liczbe a strsze (wystarczy tylo jeden) na wartosc logiczna, sortujesz cala tablice i zamiast przeszukiwac liniowo przeszukujesz binarnie czyli z 107 schodzisz do ok 24.

Szkoda tylko że muszę to sortować 10^6 jak nie więcej razy :/ bo wszystkich wartości nie mam od razu :/

0

To mozesz uzyc jakiejs struktury drzewiastej zamaist tablicy

0
skipper napisał(a)

Szkoda tylko że muszę to sortować 10^6 jak nie więcej razy :/ bo wszystkich wartości nie mam od razu :/

to może jakaś baza w wersji embaded :> parędziesiąt kilo więcej ale nie przejmujesz się pamięcią, sortowaniem i wybierasz dane któe chcesz i jak chcesz. Odpada też problem zapisywania na dysk

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