elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Error en el código!! Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en el código!! Ayuda  (Leído 2,226 veces)
Compila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Error en el código!! Ayuda
« en: 4 Julio 2022, 11:41 am »

Buenas, tengo un problema con un código que estoy realizando en el que se me pide que haga las inversiones de un numero presente en una lista en una lista (El numero 1). De forma mas explicativa es que si se pide buscar las inversiones de 1 o de X, son del número "1" o del número "X" y el algoritmo tendrá que funcionar siempre igual, pero contando sólo el número de inversiones que se le realizan a dicho número. El algoritmo debe utilizar el método divide y vencerás.
Contar inversiones me refiero donde ai y aj estén en diferentes mitades y devolver la suma de las cantidades.
El código que he realizado me devuelve un resultado pero se que no es el correcto.
Código:
public class inversiones {
/**
* The main method.
*
* @param args the arguments
* @throws IOException Signals that an I/O exception has occurred.
*/

public static void main(String[] args) throws IOException {
Scanner leer = new Scanner(new File("C:\\\\Users\\\\Downloads\\\\InversionOf1.dat"));
int nCases = leer.nextInt();

double a[] = new double[nCases];
for(int i=0; i<nCases; i++) {
a[i]= leer.nextInt();
}

System.out.println("El número de inversiones que tiene el array dado es: " +ordenar(a, 0, a.length-1));
}
/**
* Merge. Método valido para ordenar el array.
*
* @param a2 array que queremos ordenar
* @param a numero de la izquierda
* @param middle la mitad entre el límite inferior y superior
* @param b numero de la derecha
* @return el número de inversiones acontecidas durante el recorrido del método
*/
private static int merge (double[] a2, int a, int middle, int b) {
int cont=0;
int i=0, j=0, k=a;

double[] left = Arrays.copyOfRange(a2, a, middle+1);
double [] right = Arrays.copyOfRange(a2, middle+1, b+1);

/*Comparar antes del contador si el elemento que tenemos que sumar es uno o no,
Si es uno que sume y si no que no sume*/
while(i<left.length && j<right.length) {
if(left[i] <= right[j]) {
a2[k++]=left[i++];
i++;
}else {
a2[k++]=right[j++];
if(a2[k++] == 1){
cont += (middle+1)-(a+j);
//cont++;
}
//cont += (middle+1)-(a+i);
j++;
}
a++;
}

while(i<left.length) {
a2[k++] = left[i++];
}
    while (j < right.length) {
        a2[k++] = right[j++];        
}
return cont;
}


/**
* Método para ordenar el array, recursivo. Parecido a MergeSort.
*
* @param a2 array a ordenar
* @param min, limite inferior del array que queremos ordenar
* @param max, limite superior del array que queremos ordenar
* @return numero de inversiones necesarias para ordenar el array
*/
private static int ordenar(double[] a2, int min, int max) {
int cont=0;
int middle = (min+max)/2;
if(min<max) {
cont = ordenar (a2, min, middle); //ordenar la izquierda
cont = cont + ordenar (a2, middle + 1, max); //ordenar la derecha
cont = cont + merge (a2, min, middle, max);
}
return cont;
}


}

No entiendo que es lo que podría estar mal. También adjunto una pequeña lista de numero como ejemplo de los datos donde hay que buscar las inversiones de 1:
Citar
35
7
20
8
3
1
6
24
12


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
error en codigo ayuda
Programación Visual Basic
eszzes 4 2,028 Último mensaje 16 Julio 2008, 02:08 am
por eszzes
[AYUDA] Error con codigo
Programación C/C++
VintageChanel 2 2,071 Último mensaje 30 Enero 2015, 03:45 am
por vangodp
Error en codigo Ayuda!!!
Programación C/C++
arkangel2006 2 2,185 Último mensaje 10 Marzo 2015, 04:02 am
por rir3760
Ayuda error en codigo
Programación C/C++
enzopaez14 2 1,876 Último mensaje 5 Septiembre 2016, 02:41 am
por deadpool-x
Ayuda Con este codigo (ERROR)
Desarrollo Web
ifaniorunmila 7 3,580 Último mensaje 6 Abril 2021, 14:15 pm
por UnaiiM
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines