El título de arriba resume mi pregunta, para aclarar las cosas, un ejemplo es:

array[0] = 1
array[1] = 3
array[2] = 7  //largest
array[3] = 5

por lo que el resultado que me gustaría es 2, ya que contiene el elemento mayor de 7.

  • Lo que ha intentado hasta ahora?
  • posibles duplicados de Cómo encontrar la más grande de int en una matriz usando java
  • Esto es una cosa trivial a hacer realidad. Hay una gran cantidad de algoritmos de búsqueda para esto, tiene que incluso trató de algo?
  • ¿Sabe usted cómo ordenar una matriz?
  • hay más sencillo (y más rápido) cosas de la clasificación…
  • Abajo a la votación de mí – espero ver algún esfuerzo de su parte. Este no es un desafío difícil.
  • Tiene usted realmente poner los esfuerzos para resolver esto?
  • lo siento, todavía soy bastante nuevo en la programación en general, no es un duplicado exacto de link porque no me quieren devolver el mayor magnitud, pero el índice de mayor magnitud. voy a ir a buscar en las respuestas ahora a ver si funciona para mí, gracias.
  • Duplicado de ¿Cómo puedo localizar e imprimir el índice de un valor máximo en una matriz?. Tristemente he usado mi voto y retirado ya, por lo que puede echar a rodar la pelota. Alguien puede votar/bandera?

InformationsquelleAutor user3307418 | 2014-04-07

5 Comentarios

  1. 7
    public int getIndexOfLargest( int[] array )
    {
      if ( array == null || array.length == 0 ) return -1; //null or empty
    
      int largest = 0;
      for ( int i = 1; i < array.length; i++ )
      {
          if ( array[i] > array[largest] ) largest = i;
      }
      return largest; //position of the first largest found
    }
    • Usted no necesita almacenar largest.
    • cierto, pero es un poco más «legible» cuando haces 😉
    • De acuerdo a de acuerdo 🙂 creo indexOfLargest sería suficiente como una sola, la auto-explicativo de la variable.
    • pero, ¿no que también ser ineficiente? Hacer una verificación condición + un asignados, independientemente de si el valor es mayor o no!?
    • Yo no habría pensado así. Para evitar cualquier duda, esto es lo que yo estoy sugiriendo (copia en IDE a formato muy bien!): int indexOfLargest = 0; for ( int i = 0; i < array.length; i++ ) { if ( array[i] > array[indexOfLargest] ) { indexOfLargest = i; }}. Básicamente el mismo que ifLoop la respuesta.
    • Ok, ahora que tengo la solución, me di cuenta de lo simple que es :/ gracias no obstante
    • Me gustaría empezar el bucle con 1, no 0.
    • Sí, buen punto.

  2. 12
    int maxAt = 0;
    
    for (int i = 0; i < array.length; i++) {
        maxAt = array[i] > array[maxAt] ? i : maxAt;
    }
    • Gracias por la sugerencia, fija este
    • no es fijo. La primera iteración del bucle se choque con una excepción (-1 fuera de rango) … edit: veo que has corregido ahora.
    • lo siento, hice llegar usted y el autor mezclado – mi mal.
    • Este es ahora el más bonito de la solución. Hasta los votos de la gente!
    • Podría ser más bonito, si quieres empezar el bucle con 1 🙂 También no se puede diferenciar entre la matriz vacía y un elemento de la matriz.
  3. 2
    public int getIndexOfMax(int array[]) {
        if (array.length == 0) {
            return -1; //array contains no elements
        }
        int max = array[0];
        int pos = 0;
    
        for(int i=1; i<array.length; i++) {
            if (max < array[i]) {
                pos = i;
                max = array[i];
            }
        }
        return pos;
    }
  4. 2

    manera será:

     Integer[] array = new Integer[4];
        array[0] = 1;
        array[1] = 3;
        array[2] = 7;
        array[3] = 5;
    
        List<Integer> iList = Arrays.asList(array);
        System.out.println(iList.indexOf(Collections.max(iList)));
        System.out.println(iList.indexOf(Collections.min(iList)));
    • Esto no encontrar el índice.
    • gracias por corregir mi….
    • Esta es una buena solución si la matriz ya era de Integers. Lamentablemente en muchos casos no lo es, y no hay una manera agradable para moverse entre los dos (sin externas libs).
    • ¿y si los valores son repetibles.
    • Si los valores son repetibles la primera aparición de índice con la repetición de valor, serán considerados.
  5. 0

    Uso Las matrices.sort(intArray)

    int[] tempArray = myArray.clone();
    Arrays.sort(tempArray );
    int max = tempArray[tempArray .length - 1];
    int result = Arrays.asList(myArray).indexOf(max );
    • Hmmm, parece ser un montón de trabajo extra que hacer allí. Y mirando el código, no es super claro lo que hace. No es mi favorito de la solución.
    • Sí.. pero usted puede lograr su objetivo en 1 o dos líneas.
    • En realidad, uno más de la línea de esta respuesta 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here