none
Array.BinarySearch RRS feed

  • Pregunta

  • Buenas, por si a alguien le ha pasado os dejo aqui el post sobre la funcion en concreto de Array.BinarySearch.
    Tal vez lo estoy haciendo mal, pero bueno nunca se sabe.

    El problema que he detectado es que si usamos un array unidimensional dinámico la última posición que contenga este no la tiene en cuenta la función, con lo cual nunca lo encuentra.

    Un ejemplo:
    Dim datos() As String = {"Dato1", "Dato2", "Dato3"}
    Console.Write(Array.BinarySearch(datos, "Dato3"))

    Esto me devuleve -1

    Solución:
    Dim datos() As String = {"Dato1", "Dato2", "Dato3", ""}

    Console.Write(Array.BinarySearch(datos, "Dato3"))

    En mi caso me complico un poco más por las caracteristicas de la aplicación que estoy desallorando.
    Pero el funcionamiento es el mismo:

    Dim datos() As String

    Relleno los datos usando ReDim Preserve datos(100)
    Añado un datos más vacío: ReDim Preserve datos(datos.Length)

    Un saludo.

    lunes, 8 de agosto de 2016 11:04

Respuestas

  • Hola Lander,

    no debería darte ese resultado.

            Dim datos() As String = {"Dato1", "Dato2", "Dato3"}
            Console.Write(Array.BinarySearch(datos, "Dato3"))

    Esto debería devolver 2.

    Sin embargo:

            Dim datos() As String = {"Dato1", "Dato3", "Dato2"}
            Console.Write(Array.BinarySearch(datos, "Dato2"))
    

    Te devolverá -2.

    Ten en cuenta que, para que el método BinarySearch funcione correctamente, los elementos del Array tienen que estar ordenados.



    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 8 de agosto de 2016 11:25