¿Cómo obtener la mediana de una array de números en JavaScript?

En este artículo, veremos cómo encontrar la mediana de una array usando JavaScript.

Ejemplos:

Input arr1 : [1 4 7 9]
Output : 5.5
Explanation : The median of the two sorted array is 
              the middle elements which is 5 if the 
              arrayLength =arr1.length + arr2.length is odd 
              if the array length is even then it will be 
              the average of two number 

Input: arr1 : [5 3 1 8 90]
        
Output: 5
Explanation : The median is average of two number 
              because the array.length is even for this case.

Enfoque: Aquí primero ordenamos la array y luego encontraremos la longitud de la array. Si la longitud de la array es par, la mediana será arr[(arr.length)/2] +arr[((arr.length)/2)+1]. Si la longitud de la array es impar, la mediana será un elemento intermedio.

Javascript

<script>
    function medianof2Arr(arr1) {
        var concat = arr1;
        concat = concat.sort(
            function (a, b) { return a - b });
  
        console.log(concat);
        var length = concat.length;
  
        if (length % 2 == 1) {
  
            // If length is odd
            console.log(concat[(length / 2) - .5])
            return concat[(length / 2) - .5]
  
        }
        else {
            console.log((concat[length / 2] 
                + concat[(length / 2) - 1]) / 2);
                  
            return (concat[length / 2] 
                + concat[(length / 2) - 1]) / 2;
        }
    }
  
    arr1 = [1, 4, 7, 9]
  
    medianof2Arr(arr1)
</script>

 

Producción:

5.5

Complejidad del tiempo:

O(n + m)

Enfoque 2: aquí primero hemos creado la variable central que tiene el valor central independientemente de la longitud, ya sea que la longitud de la array sea par o impar. Ahora, después de eso, ordenamos la array evitando la mutación. Mutación significa cambiar el nombre del objeto con otro nombre de objeto o pasar el objeto a otro objeto llamado mutación.

Se puede hacer con tipos de datos de referencia que son arrays, Objeto , así que por ahora evite esto. Después de eso, si la longitud de la array es par, entonces tenemos los dos valores en la array en pos arr((arr.length)/2) + arr(((arr.length)/2) +1). Luego tome la media de estos dos números y regrese como una mediana.

Javascript

<script>
    function median_of_arr(arr) {
        const middle = (arr.length + 1) / 2;
  
        // Avoid mutating when sorting
        const sorted = [...arr].sort((a, b) => a - b);
        const isEven = sorted.length % 2 === 0;
  
        return isEven ? (sorted[middle - 1.5]
            + sorted[middle - 0.5]) / 2 :
            sorted[middle - 1];
    }
    var arr = [1, 4, 7, 9];
    console.log(median_of_arr(arr));
  
</script>

Producción: 

5.5

Complejidad del tiempo:

O(n+m)

Publicación traducida automáticamente

Artículo escrito por rohit2sahu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *