Gambas-it

Gambas3 => Programmazione => Topic aperto da: vuott - 06 Marzo 2019, 18:59:30

Titolo: Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: vuott - 06 Marzo 2019, 18:59:30
https://gitlab.com/gambas/gambas/commit/d668dadcf5eb887ae9bca2b5ed56c311319a51e1
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: Gianluigi - 06 Marzo 2019, 23:22:17
Un po di codice dimostrativo?  ;D
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: vuott - 07 Marzo 2019, 00:10:27
Un po di codice dimostrativo?  ;D

.....e lo chiedi a me ?

(https://i.imgur.com/jpyTI.gif)
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: Top Fuel - 07 Marzo 2019, 22:37:49
Non ho capito bene la cosa. In base a quale criterio confronta i due array per poi fare l'ordinamento? :-\
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: vuott - 08 Marzo 2019, 00:29:36
Non ho capito bene la cosa. In base a quale criterio confronta i due array per poi fare l'ordinamento? :-\

...e lo chiedi a me ?

(http://www.stranotizie.it/wp-content/uploads/2018/09/tenor.gif)
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: Gianluigi - 08 Marzo 2019, 19:42:43
Non ho capito bene la cosa. In base a quale criterio confronta i due array per poi fare l'ordinamento? :-\

Benoit Minisini alla domanda ha così risposto:

A.SortUsing(B) ordina il vettore A utilizzando l'ordine definito nella matrice B.

Ad esempio:

A = ["A", "B", "C", "D", "E"]
B = [4, 1, 2, 10, 8]
A.SortUsing (B)

Ora A è ["B", "C", "A", "E", "D"]


Alcune osservazioni:

- Per farlo, SortUsing() crea un array intero temporaneo della stessa dimensione di A.

- Ovviamente A e B devono avere la stessa dimensione.

- A viene ordinato in base alla sostituzione generata da B.Sort().


Le mie considerazioni:
Non è che il tutto sia subito intuibile, occorre pensare a B come ad un template e quindi ad un ordine di tipo terzo, primo, secondo, quinto, quarto.
L'ordine è dato da sort su B che opererebbe spostando il 4 (cioè il primo valore) in terza posizione ( A in terza) 1 in prima (B in prima) ecc. ecc.

Provare per credere:

Codice: [Seleziona]
Public Sub Main()

  Dim A As String[] = ["A", "B", "C", "D", "E"]
  Dim B As Integer[] = [4, 1, 2, 10, 8]

  A.SortUsing(B)
  For Each s As String In A
    Print s;;
  Next
  Print

End
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: Top Fuel - 09 Marzo 2019, 15:01:22
Adesso è più chiaro, resta da stabilire in quali ambiti può essere utile.
Titolo: Re:Array.SortUsing() è un nuovo metodo che ordina un array in base a un altro array
Inserito da: vuott - 09 Marzo 2019, 15:21:40
Comunque, questo metodo avrebbe avuto maggiore senso in una matrice o in un array multidimensionale.