Je suis occupé à vous préparer à l'examen MCTS 70-536, selon le livre d'examen (Microsoft Press - .NET Framework - Kit de formation en soi-même de la Fondation pour le développement d'applications 2e édition), ce code exemple:
Console.WriteLine(al.BinarySearch("world"));
4 Réponses :
La matrice que vous effectuez la recherche binaire sur n'est pas triée. Ceci est une exigence de BinarysSearch à fonctionner. P>
Ne pas trier, confond l'algorithme de recherche et fait penser que "le monde" devrait être à la 7ème place, mais ce n'est pas dans le tableau: le résultat est -7. P>
Merci de me donner de meilleurs résultats. Je suis assez surpris par l'erreur dans le livre. Cela sonnait un peu bizarre d'avoir un .binarySearch (s) et une méthode .indexofof (s) qui fait la même chose.
pris directement de MSDN Documentation de ArrayList.binaireSearch ( http://msdn.microsoft.com/en-us/library/5tzt7yz3%28vs.85%29.aspx ) P>
Le paramètre de valeur et chaque élément de la flambée doit mettre en œuvre la Interface icomparable, qui est utilisée Pour les comparaisons. Les éléments du ArrayList doit déjà être trié dans augmentation de la valeur en fonction du tri ordre défini par l'icomparable la mise en oeuvre; Sinon, le résultat pourrait être incorrect. p> blockQuote>
du Documentation : P>
L'indice de valeur basé sur zéro dans le ArrayList trié, si la valeur est trouvée; Sinon, un nombre négatif, qui est le complément bitwise de l'indice de l'élément suivant qui est plus grand que valeur ou, s'il n'y a pas de plus grand élément, le complément bitwise de Compter. P> blockQuote>
Notez le mot fort> trié strong>. p>
Question déjà répondu mais ajoute ceci pour référence.
Le BinarySearch trouvera des éléments en utilisant un algorithme trié. Dans votre exemple, le tri par défaut est alphabétique afin que "World" soit "autrement", donc numéro 7. P>
Vous verrez un surcharge de la BinarySearch qui accepte un objet IComparer. Pour ne pas fournir cela donne le type d'alphabétique par défaut. p>
mais si vous avez implémenté la méthode "ReSverseSort", car le livre suggère, vous devez passer la fonction BinarySearch de l'objet "ReSersesort". P>
Comme ceci; P> < PRE> XXX PRE>
Aussi, comme je l'ai trouvé assez intéressant si vous implémentez la classe "ReverseSort" et faites une console.writine sur laquelle les valeurs sont comparées, les résultats n'étaient pas ce que j'attendais. J'ai passé un peu tout en essayant de résoudre ce que l'algorithme était. P> p>