18. oktober 2002 - 09:30Der er
26 kommentarer og 1 løsning
Sortering af en del af en liste(database)
Jeg har følgende struktur:
ID Tekst
Jeg har sorteret min liste ud fra ID (flere records kan godt have samme ID, da de er knyttet til en tabel hvor ID er nøglen).
Jeg har nu sorteret listen ud fra id, og dette ser nogenlunde således ud:
1 Per 1 Ole 1 Anna 2 John 2 Chales 3 Gustav
Mit spørgsmål lyder nu: Jeg vil gerne sortere den del af listen, der har ID: 2, ud fra tekst, men lade resten af listen stå uberørt. Derfor skulle listen efter sortering gerne se således ud:
1 Per 1 Ole 1 Anna 2 Chales 2 John 3 Gustav
Hvordan gøres dette? p.s. Jeg ved godt hvor i listen jeg starter, og hvor jeg slutter. iStart = 3, iSlut = 4
Det jeg leder efter, er en funktion, der virker som standardfunktionen quicksort, men kun sortere den del af listen jeg tidligere har beskrevet. Sorteringskriteriet er her en streng, der kan sammenlignes (hvis værdierne er ens, returneres 0, ellers > eller < end 0).
Men jeg mangler stadig at bytte om på en del af listen - uden at røre ved den resterende del af listen.... Sortering med strcmp kender jeg "desværre" godt til.
Ved kreativ brug a qsort, peg på første element af det der skal sorteres altså din Id=2 og antal poster der skal sorteres.
Hvis du bruger den angivne compare på hele listen skulle du få samme resultat, primær nøgle er Id, sekundær er navn, så vil du få recordne sorteret efter Id og indenfor hver Id efter navn.
jpk, du får halvdelen af pointene for det store engagement. Men det virker altså ikke... (send et svar) segmose, du får den anden halvdel, fordi du inspirrerede mig til en løsning. Det er nødvendigt med et rekursivt kald for at sortere databasen som jeg vil have det.
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.