De retour de la position de la valeur dans un tableau 2D, Java
Je suis fatigué. Ce doit être simple. de bois... pour.... les arbres....
Je suis en train de retourner la position d'une valeur dans un tableau 2D.
J'ai un double tableau [300][300].
Toutes les valeurs contenues dans ce document sont 0 à l'exception d'une qui est de 255.
Comment puis-je écrire une méthode pour retourner [i][j] emplacement de 255?
Merci d'avance.
- Ces valeurs sont triées? Si donc, il y
O(log n)
(complètement trié) ouO(n log n)
(uniquement les lignes ou de colonnes) versions. Sinon, vous êtes coincé avecO(n^2)
, comme cela a été prévu. - Non, pas triés.
- que faire de ces O choses à dire. Ils n'ont pas de sens pour moi et donc je ne comprends pas leur valeur
- il s'appelle Big O la notation. C'est un moyen simple de mesurer le nombre d'étapes nécessaires pour faire quelque chose.
Vous devez vous connecter pour publier un commentaire.
Simplement parcourir tous les éléments jusqu'à ce que vous trouviez celui qui est
255
:Cela fonctionne:
C'est peut-être le plus rapide, cependant. Il vérifie de départ dans chaque coin, progressivement vers l'intérieur vers le centre, horizontalement d'abord, puis verticalement:
i=0..length/2
etj=0..length/2
à la place pour éviter une double vérification. (Peut-être des tout-en-un).length/2+1
.i
a parcourir toute la longueur, bien que.n^2
est pire-cas. La moyenne des cas est encore plus rapide car il vérifie les deux côtés avant de le ré-itération. Le plus efficace peut comprendre plus de deux contrôles (et en ajoutant un deuxième exemple de code).Vous pouvez utiliser la recherche binaire pour chaque colonne.
Utilisation pour boucle d'itération sur chaque colonne comme c'est un tableau 2d.
Une fois que vous obtenez toutes les lignes de la colonne de l'itération ( ce qui serait un autre tableau), faire une recherche binaire sur eux.
Conditions S'Appliquent:
1. Si le tableau est trié .
2. Si vous êtes sûr qu'un seul élément est-il dans chaque colonne. ( Pas de doublons).
3. Si il y a des doublons dans les lignes( faire la recherche linéaire) .
J'espère que cela aide. N'hésitez pas à demander si elle est encore dans le doute 🙂