J'essaie d'inverser l'ordre d'un tableau en Java.
Quel est le moyen le plus efficace de le faire avec O(n) avec le moins de mémoire utilisée?.
Pas besoin de répondre avec du code, le pseudo-code ira bien.
Voici mon processus de pensée:
create a new temp array //I think this is a waste of memory,
//but I am not sure if there's a better way
grab elements from the end of the original array -decrement this variable
insert element in beginning of temp array -increment this variable
then make the original array point to the temp array? //I am not sure
//if I can do this in Java; so let's say the
//original array is Object[] arr; and the temp array is
//Object[] temp. Can I do temp = arr; ?
Existe-t-il un moyen plus efficace de le faire sans utiliser de tableau temporaire? Enfin, supposons qu’il n’y ait pas de valeur NULL dans le tableau, tout peut donc fonctionner ... ..
Edit: non ce n'est pas un devoir.
S'il s'agit d'un tableau d'objets, alors Collections.reverse(Arrays.asList(array))
effectuera le travail avec une mémoire constante et une durée linéaire - aucun tableau temporaire n'est requis.
Vous n'avez pas besoin d'utiliser un tableau temporaire; parcourez le tableau du début à la moitié, en remplaçant l'élément à i
par l'élément à array.length-i-1
. Assurez-vous de bien manipuler l’élément central (ce n’est pas difficile, mais assurez-vous.)
Utilisez un seul élément temp.
int array[SIZE];
int temp;
for (int i = 0; i < SIZE/2; i++)
{
temp = array[i];
array[i] = array[SIZE-1 - i];
array[SIZE-1 - i] = temp;
}
vous pouvez le faire sans avoir besoin d'un tableau temporaire
size - 1
, 1 et size - 2
etc)temp = a [i]; a [i] = a [end-i]; a [end-i] = temp;
Voici deux solutions:
loop to N/2
swap each element at i with element at N - i
Selon votre situation, une autre solution consiste à simuler l’inversion du tableau en indexant:
GetValueAt(int i){return array[N - i];}
Considérons que le tableau est de tableau d'Integer, alors nous pourrions aussi chercher une solution comme celle-ci.
arr - tableau d'integer
for(int i=0,int J<arr.length-1 ; i<j ; i++,j--)
{
temp =a[i];
a[i]=a[j];
a[j]=temp;
}
pseudocode, en supposant que les tableaux à index basés sur 0:
for i in range(0, len(array)/2):
swap(array[i], array[(len(array)-1)-i])