I ældre programmeringssprog blev arraybegrebet ofte implementeret forskelligt altefter hvormange dimensioner arrays skulle have. fx i Pascal: var Olsen : array[1..9,3..8] of integer;
Det går man mere og mere bort fra, og laver istedet flere dimensioner ved at lave et array hvor cellerne i det array igen indeholder arrays. Forskellen er nogenlunde ens, hvor man i Pascal skrev Olsen[3,6]; skriver man nu Olsen[3][6];
den nye måde er lidt dyrere i ram (som er billigt idag) og giver noget større frihed. de arrays der ligger 'på tværs behøver fx ikke at være lige lange, sådan som de skulle være i Pascal.
Mht sorteringsmetoder, tænker du så på sådan noget som bubblesort, quicksort, heapsort osv? Det er næsten nemmere at låne en grundlæggende datalogibog om algoritmer og så lige læse et enkelt kapitel om sortering...
Der findes ikke nogen sorteringsmetode der er "bedst", det afhænger af en bunke andre faktorer. Hvor store datamængeder der skal sorteres. Om data ankommer i separate blokke eller om dataelementer ankommer enkeltvis og skal passes ind i en eksisterende sortering. Hvad der skal gøres med data bagefter. ...
Det er den ja, og mergesort kan gøres noget nær lineær med N. så til rigtig masser af data er den suveræn. til 10-20 små elementer er bubbelsort bedre selvom den er N*N.
at skabe en datastruktur der i en vis grad saver til virkeligheden.
jeg bor fx i en større etageejendom, i opgang 2, på 3die sal i lejlighed 2.
så hele den bologblok jeg bor i kan ret nemt betragtes som et 3-dimensionalt array. hvo man med indexværdiene: opgang, etage og lejlighedsnr kan udpege min eller enhver anden lejlighed i den blok.
Computerspil har typisk et spilområde der er et 2-dimensionalt array. hvis ikke mine projektiler når position x henad og y opad på samme tidspunkt som der er en space-invader i den position vil space-invaderen fortsætte med at dale nedad og hvis den kommer helt ned til position [x,0] dør jeg.
jakoba >> Mange tak for illustrationen med terningerne :-) Dén satte det med dimensionale arrays på plads for mig !!!
chries >> Også tak til dig :-)
codemon >> Hvad er en hashtabel ?
tipsen >> Hvilken grundlæggende datalogibog om algoritmer kan du anbefalde ?
Jeg er meget glad for alle de svar jeg har fået og håber at I vil hjælpe mig med at få svar på ovenstående spørgsmål. Jeg giver også gerne flere point ...
torben: Har ikke det store overblik over datalogibøger, men har selv haft "Kingston: Algorithms and Data Structures" - ved ikke om den er specielt god...
Men hvis du vil overveje at købe sådan en, synes jeg næsten du skal poste et særskilt spørgsmål - for der vil sikkert være mange meninger og gode forslag! Du skal dog være opmærksom på, at det ikke nødvendigvis er et konkret programmeringssprog du lærer, men nok mere generel programmeringsteknik og tænkemåde.
Har lige kigget lidt nærmere på de links i kom med til information om sortering af data.
Men jeg forstår dem ikke helt
Jeg skal lave en sortering af et 2-dimensionalt array. Jeg skal have mulighed for at sortere asc og desc. Indholdet af arrays'ne kan variere mellem 1-100 (normalt), men det kan også dreje sig om 10000 el. flere.
Så det skal være en metode der er rimelig hurtig til få poster, men som ikke går helt død ved mange data ...
Først og fremmest kræver sortering at du har en klippefast og fuldstændigt specificeret definition af hvad "større end" betyder. eg: ved sortering af navne: "Jack Vance" er større end "Poul Anderson" fordi man sammenligner på efternavnet først.
Og ved sortering ad et 2-dimesionalt array kan det endog være der skal være 2 helt forskellige "større end" definitioner. Hvis der på den ene led skal sorteres elementer, og på den anden led skal sorteres hele rækker.
Vi ved stadig alt for lidt til at give et fornuftigt råd.
en hashtabel er en måde at lagre på hvor indeks nummeret beregnes ud fra indholdet, det kaldes en hashfunktion. Et simpel eksempel er en hashtabel til personnavne, der kan udregnes et indeks nummer ved at tage ASCII værdien af bogstaverne og lægge dem sammen. Når der så skal "søges" efter en person, udregnes indeks nummeret igen og navnet findes første gang. Dette medfører at der kun skal søges én gang for at finde et vilkårligt element. Virkeligheden er selvfølgelig ikke så perfekt, der kan opstå kollisioner hvis to navne giver samme indeks nummer.
Et multidimensionelt array kan anskuliggøres ved et lille tankeeksperiment.
Du skal indeksere nogle personer et eller andet sted i verden.
Der er lande i lande er der kommuner i kommuner er der byer i byer er der huse i huse er der personer.
indeks 1 i lande viser et land, derunder skal indekseres til kommunen, derunder til byen osv. (5-Dimensionelt array) fx array landnr = 2, kommune i det land = 7, by i den kommune = 23, hus i den kommune = 9, person i det hus = 1. verdensperson[2][7][23][9][1]
Men som sagt vil dette ikke forekomme i moderne objekt orienteret programmering.
// Vi ved stadig alt for lidt til at give et fornuftigt råd.
Jamen så må jeg jo prøve at forklare mig lidt bedre ...
Jeg er ved at lave en webmail (i ASP) hvor jeg viser en liste over meddelser i indbakken (via jMail). For at kunne sortere denne liste efter afsender, emne, størrelse og data/tid fik jeg den idé at man kunne stoppe dataene ind i et array og derefter trække dem ud sorteret igen ...
Der skal altså kun være mulighed for at sortere på et af felterne (f.eks. størrelse) og dette skal kunne gøres både stigende og faldende ...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.