Domanda

In Delphi / Pascal vorrei ordinare una TStringList in ordine alfabetico. Ma per questo scopo, posso usare solo i seguenti due metodi:

Move:. sposta una stringa da una posizione di indice a un'altra, spostando altre stringhe intorno come appropriato

Cambio:. scambia due stringhe nella lista, come individuati dalle loro posizioni di indice

Come potrei fare questo? Ho avuto l'idea di passare attraverso tutti gli elementi con un ciclo e per qualcosa di simile:

  1. lastFirstLetter: = Copia (CurrentItem, 1, 1)
  2. vai alla voce successiva
  3. currentFirstLetter: = Copia (CurrentItem, 1, 1)
  4. se ord (currentFirstLetter)

Quale sarebbe il modo più veloce per ordinare uno StringList con questi due metodi? Non posso usare il metodo di ordinamento e la proprietà ordinati per la strada.

È stato utile?

Soluzione

metodi di spostamento / scambio sono tutto ciò che serve. Comunque hai un sacco di algoritmi tra cui scegliere! Date un'occhiata a questo sito (da una rapida ricerca su Google) per i confronti animati: http: //www.sorting- algorithms.com/

Credo che tutti questi algoritmi basta usare 'mossa', a parte mucchio e le quicksorts che utilizzano solo 'scambio'

Altri suggerimenti

Si dà due metodi:. (1) Swap e (2) Scambio

C'è un terzo metodo:

(3) Tenere un TList di puntatori per le corde e ordinare i puntatori.

Questo metodo lascerà tutte le corde dove sono e potrebbe essere più veloce.

Vedere la domanda: Miglior modo per ordinare un array in Delphi e risposta accettato di Barry Kelly, così come le altre risposte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top