[Algoritmi] Ordinamento di un array e sua reversibilità
Ciao a tutti. Ho la necessità di ordinare un vettore ma poi poter risalire all'originale.
Ad esempio
se io ho:
a[1] = 30
a[2] = 40
a[3] = 50
a[4] = 10
Se vi applico un algoritmo come il Bubble Sort per un ordinamento decrescente avrò:
a'[1] = 50
a'[2] = 40
a'[3] = 30
a'[4] = 10
però vorrei tenere traccia del fatto che
a'[1], il valore ordinato che sta al III posto, era in realtà il vecchio a[1]
c'è un modo semplice per farlo con un linguaggio di basso livello?
Ad esempio
se io ho:
a[1] = 30
a[2] = 40
a[3] = 50
a[4] = 10
Se vi applico un algoritmo come il Bubble Sort per un ordinamento decrescente avrò:
a'[1] = 50
a'[2] = 40
a'[3] = 30
a'[4] = 10
però vorrei tenere traccia del fatto che
a'[1], il valore ordinato che sta al III posto, era in realtà il vecchio a[1]
c'è un modo semplice per farlo con un linguaggio di basso livello?
Risposte
ok mi rispondo da solo perchè è più semplice di quanto non credessi.
basta usare un indice!
esempio di prima
a[1] = 30
a[2] = 40
a[3] = 50
a[4] = 10
index[1] = 1
index[2] = 2
index[3] = 3
index[4] = 4
se applico il bubble sort affiancando agli scambi su a[] gli scambi su index[] avrò
a'[1] = 50
a'[2] = 40
a'[3] = 30
a'[4] = 10
index[1] = 3
index[2] = 2
index[3] = 1
index[4] = 4
basta usare un indice!
esempio di prima
a[1] = 30
a[2] = 40
a[3] = 50
a[4] = 10
index[1] = 1
index[2] = 2
index[3] = 3
index[4] = 4
se applico il bubble sort affiancando agli scambi su a[] gli scambi su index[] avrò
a'[1] = 50
a'[2] = 40
a'[3] = 30
a'[4] = 10
index[1] = 3
index[2] = 2
index[3] = 1
index[4] = 4